关于Spring依赖注入一些理解和总结
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做。
我们常用的注入方式无非就是三种:属性注入、构造器注入、setter方法注入。
1.属性注入:
最常见的一种注入方法
示例:
@Service public class AClass { @Autowired BClass bclass; //... }
常用的注入注解还有@Resource和@Qualifier等。
2.构造器注入:
示例:
@Service public class AClass { BClass bclass; @Autowired public AClass(BClass bclass){ this.bclass = bclass; } }
当创建AClass对象时,调用其构造器,而其构造器上加有注解@Autowired,所以先从池中找到BClass的Bean对象注入到构造方法中,然后再调用此构造函数,也就是先将构造函数用到的参数注入,再调用构造函数。
如果类中只有一个构造函数,则不需要加@Autowired,在创建时会自动调用这个唯一的构造函数,如果有多个构造函数,则需要加上@Autowired来明确调用哪个构造函数。
3.setter方法注入:
不推荐使用setter方法注入,太过臃肿。
实例:
@Service public class AClass { BClass bclass; @Autowired publicviod setBClass(BClass bclass){ this.bclass = bclass; } }
当创建AClass对象时,先去调用AClass的构造器,发现AClass与BClass有依赖关系,然后使用setter方法先将bclass实例化,然后再注入到AClass中。
作者:Noob-Green-Hand
出处:https://www.cnblogs.com/Noob-Green-Hand/p/17323301.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏