依赖注入与控制反转基本概念
依赖注入:对于spring而言,将自己置身于spring的立场上去看,当调用方需要某一个类的时候我就为你提供这个类的实例,就是说spring负责将被依赖的这个对象赋值给调用方,那么就相当于我为调用方注入了这样的一个实例。从这方面来看是依赖注入。
控制反转:对于调用方来说,通常情况下是我主动的去创建的,也就是对于这个对象而言我是控制方,我有他产生与否的权力,但是,现在变了,现在变为spring来创建对象的实例,而我被动的接受,从这一点上看,是控制反转。
避免使用方,NEW 调用对象
注入方式
1.field注入
2.构造器注入
(1).IOC容器启动会严格检查,构造函数为空的参数会报错,脱离IOC使用会无法注入属性。
(2).避免构造方法中使用属性,NPE异常
Java变量的初始化顺序为:静态变量或静态语句块–>实例变量或初始化语句块–>构造方法–>@Autowired3.setter注入
springboot 注入
1 |
|
1 | tom: |
@ConstructorBinding 这个注解,就标识这个类的参数优先通过带参数的构造器注入,如果没有带参数的构造器则再通过 setters 注入
不支持 @Component、@Bean、@Import 等方式创建 bean 的构造器参数绑定