Dependency Injection称为依赖注入,简称DI(在Spring创建对象时为其赋予属性值)
组件之间依赖关系由容器在运行期决定,是由容器动态的将某个依赖关系注入到组件之中
注入方式
Setter方式注入
只需提供对应的Setter方法实现注入,JavaBean对象一般都实现了Setter方法所以较常用
构造方法注入
创建对象时Spring工厂会通过构造方法为对象的属性赋值,针对于没提供Setter方法的JavaBean
自动注入
不需要在配置中指定为哪个属性赋值,由Spring自动根据某个原则在工厂中查找Bean为其注入属性值
自动注入的两种方式:
基于名称自动注入
基于类型自动注入 (根据实现的接口来判断并自动注入值,如果不成功则以接口实现类的名称相同为准则实现注入)
注解自动注入
@Autowired 基于类型自动注入
@Resource 基于名称自动注入
@Qualifier("***") 限定要注入bean的id,一般与@Autowired联用
@Value 注入简单类型数据,jdk1.8时支持基本数据类型 + String类型
总结来说DI就是把咱们的资源反转给了Spring,应用程序需要资源要向Spring去要
控制反转的目的就是要实现高内聚 + 低耦合
Spring的Ioc可以理解为就是DI