恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Spring的基础

  • 首页
  • 资讯中心
  • /
  • Spring的基础

相关资讯

ARM Cortex-M0+ MCU MS32C001-C评估:从环境搭建到低功耗嵌入式设计实战 2026/10/20 1:50:43
基于Matlab的锂离子电池宽频EIS阻抗谱计算与拟合实践 2026/10/20 1:45:42
Ventoy 主题美化:改3处配置,让U盘启动菜单长成自己的样子 2026/10/20 1:45:42

最新资讯

AI Agent落地避坑:从架构治理到成本控制的实战指南
模型轻量化与高效部署实战:剪枝、量化、蒸馏全流程解析
从零开发网页版“大鱼吃小鱼”:玩法、AI与性能优化实战
图片转Excel全流程拆解:OCR批量处理与表格结构还原实战
多类动物智能识别项目实战:基于YOLOv8的训练调优与TensorRT部署全流程
AIGC检测原理与降重实战:免费工具对比及完整策略

今日推荐

高频变压器实战经验总结:磁芯选型、绕组工艺与故障排查全解析
U-Boot移植的关键:深入理解Kconfig配置系统与依赖关系
步进电机原理与调试全解析:从步距角到丢步排查

本周热门

基于GMM的语音识别系统原理与MATLAB实现详解
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

Spring的基础

发布时间:2026/10/20 1:50:43
Spring的基础 IoC控制反转控制是谁来创建对象谁来决定对象之间的依赖关系反转是把这个控制权交给Spring没IoC的时候自己要new对象publicclassUserService{// 你自己手动创建 UserDaoprivateUserDaouserDaonewUserDao();// 你来new你来控制publicvoidsave(){userDao.save();}}有IoC的时候无需自己newpublicclassUserService{Autowired// 告诉Spring请帮我把UserDao的实例注入进来privateUserDaouserDao;publicvoidsave(){userDao.save();}}DI依赖注入Spring把需要的对象注入到对象里面你的 UserService 依赖 UserDao没有 UserDao 就没法干活 Spring 把 UserDao 注入送进到 UserService 里一共有三种注入方式构造器注入Setter注入字段注入构造器注入ServicepublicclassUserService{privatefinalUserDaouserDao;// 通过构造函数把依赖送进来publicUserService(UserDaouserDao){this.userDaouserDao;}}Setter注入ServicepublicclassUserService{privateUserDaouserDao;// 通过setter方法注入AutowiredpublicvoidsetUserDao(UserDaouserDao){this.userDaouserDao;}}字段注入ServicepublicclassUserService{Autowired// 直接标在字段上privateUserDaouserDao;}不同位置的含义// 方式1放在构造器上 ServicepublicclassOrderService{privatefinalOrderDaoorderDao;Autowired// 告诉Spring创建OrderService时请调用这个构造器publicOrderService(OrderDaoorderDao){// ^^^^^^^^^// Spring 看到构造器需要 OrderDao// 就去容器里找一个 OrderDao 传进来this.orderDaoorderDao;}}// 方式2放在 setter 方法上 ServicepublicclassOrderService{privateOrderDaoorderDao;Autowired// 告诉Spring创建完 OrderService 后请调用这个 setter 方法publicvoidsetOrderDao(OrderDaoorderDao){// ^^^^^^^^^// Spring 找到 OrderDao传进来this.orderDaoorderDao;}}// 方式3放在字段上最常见ServicepublicclassOrderService{Autowired// 告诉Spring请直接把 OrderDao 的实例塞到这个字段里privateOrderDaoorderDao;// ^^^^^^^^^^// Spring 用反射直接把值塞进去// 不经过任何方法直接改字段的值}Bean和Spring容器BeanBean就是一个交给Spring容器的Java对象Service// 这个注解告诉Spring请把UserService当成Bean来管理publicclassUserService{...}Repository// 这个注解告诉Spring请把UserDao当成Bean来管理publicclassUserDao{...}Service、Repository、Component、Controller → 都是在贴标签告诉 Spring这个类请你管理 Spring 看到标签后就会自动创建这个类的实例放进容器里 以后谁需要这个对象Spring 就从容器里取出来给你 以上这些都是加载类上的Bean一般写在 Configuration 配置类里面**把方法返回的对象交给 Spring 容器成为 Bean**Spring容器就是存放Bean的容器AOP面向切面编程一句话定义把这些重复的、跟核心业务无关但又必须做的事情权限检查、日志、事务抽出来统一处理没有用AOP之前要进行日志管理的时候// 没有AOP每个方法都要写重复代码publicvoidaddUser(){checkPermission();// 权限检查log.info(开始执行);// 日志记录// 真正的业务逻辑只有这一行userDao.addUser();log.info(执行完毕);// 日志记录}publicvoiddeleteUser(){checkPermission();// 又要写一遍log.info(开始执行);// 又要写一遍userDao.deleteUser();log.info(执行完毕);// 又要写一遍}用了AOP之后Aspect// 这是一个切面ComponentpublicclassLogAspect{Before(execution(* com.example.service.*.*(..)))// 翻译在service包下所有方法执行之前先执行这段代码publicvoidbeforeLog(){log.info(方法开始执行);}After(execution(* com.example.service.*.*(..)))// 翻译在service包下所有方法执行之后再执行这段代码publicvoidafterLog(){log.info(方法执行完毕);}}AOP里面的几个定义切入点Pointcut需要加附加逻辑的方法连接点JoinPoint所有能附加逻辑的方法通知Advice核心业务逻辑前后要做的东西就是通知切面Aspect切入点加通知就是一套增强方案目标对象Target就是核心业务逻辑代理Proxy就是一个代理对象做的事情是核心逻辑加附加逻辑

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号