DI
文章目录
依赖注入方式
1.setter注入
简单类型和引用类型
引用类型
在bean中定义引用类型属性并提供访问的set方法
配置中使用property标签ref属性注入引用类型对象
简单类型
在bean中定义引用类型属性并提供可访问的set方法
配置中使用property标签value属性注入简单类型数据
2.构造方式注入
简单类型和引用类型
引用类型
在bean中定义引用类型属性并提供可访问的构造方法
配置中使用constructor-arg标签ref属性注入简单类型数据
简单类型
在bean中定义引用类型属性并提供可访问的构造方法
配置中使用constructor-arg标签value属性注入简单类型数据
参数适配:
1.配置中使用constructor-arg标签type属性设置按形参类型注入
2.配置中使用constructor-arg标签index属性设置按形参位置注入
依赖注入方式选择
1.强制依赖使用构造器进行,使用setter注入有概率不进行注入导致null对象出现
2.可选依赖使用setter注入进行,灵活性强
3.Spring框架倡导使用构造器,第三方框架内部大多数采用构造器注入的形式进行数据初始化,相对严谨
4.如果有必要可以两者同时进行,使用构造器注入完成强制依赖的注入,使用setter注入完成可选依赖的注入
5.实际使用需根据实际情况分析,如果受控对象没有提供setter方法就必须使用构造器注入
6.无要求推荐使用setter注入
依赖自动装配
概念
IOC容器根据bean所依赖的资源在容器中自动查找并注入到bean的过程称为自动装配
方式
配置中使用bean标签autowire属性设置自动装配的类型
按类型:byType
必须保障容器中相同类型的bean唯一,推荐使用
按名称:
byName必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用
自动装配:
自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效
按构造方法
不启用自动装配
集合注入
1.注入数组类型数据
2.注入List类型数据
3.注入Set类型数据
4.注入Map类型数据
5.注入properties类型数据
注:property标签表示setter方式注入,构造方式注入constructor-arg标签内部也可以写<array>、<list>、<set>、<map>、<props>标签