依赖注入常见有4种方法,
1.setter注入:
1.简单类型
2.引用类型
2.构造器注入:
1.简单类型
2.引用类型
1.1 setter注入简单类型
配置时各个位置的对应关系如下
1.2 setter注入引用类型
配置时各个位置的对应关系如下
实例意为BookServiceImpl中依赖了UserDaoImpl和BookDaoImpl
总结:
2.1 构造器注入引用类型
2.2 构造器注入简单类型
然而这样的形式并不符合我们spring的初衷:解耦
当我们改变UserDaoImpl的构造函数中的形参时,配置文件中的bean里面的name也需要修改成对应的名字,
于是引出了下面这种解耦的方法:
即不给定形参的名字, 而是用类型来对应
然而这种方法问题很显然, 当我们有2个相同的类型的参数要传给构造函数时, 方法失效.
于是引出第二种解决方法:
仅仅指定形参的位置来构成对应关系, 使用index=”0″, 表示指定为第一个形参
依赖注入方式选择
- 1.强制依赖使用构造器进行,使用setter注入有概率不进行注入导致null对象出现
- 2.可选依赖使用setter注入进行,灵活性强
- 3.spring框架倡导使用构造器,第三方框架内部大多数采用构造器注入的形式进行数据初始化,相对严谨
- 4.如果有必要可以两者同时使用,使用构造器注入完成强制依赖的注入,使用setter注入完成可选依赖的注入
- 5.实际开发过程中还要根据实际情况分析,如果受控对象没有提供setter方法就必须使用构造器注入
- 6.自己开发的模块推荐使用setter注入
总结
简而言之, 注入引用类型, 用ref, 注入简单类型, 用value
==========================================================
依赖自动装配
IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配自动装配方式
常见方式有4种, 按类型, 名称, 构造方法, 关闭
调用时要删除自己手动配置的依赖, 然后添加关键字autowire
如图, autowire的参数有5种, 分别为:通过名称, 通过类型, 使用构造方法, 默认, 关闭
-
按类型(常用)
-
按名称
-
按构造方法
-
不启用自动装配
依赖自动装配特征
- 自动装配用于引用类型依赖注入,不能对简单类型进行操作
- 使用按类型装配时( byType )必须保障容器中相同类型的bean唯一,推荐使用!!!
- 使用按名称装配时( byName )必须保障容器中具有指定名称的bean,因变量名与配置耦合, 不推荐使用
- 自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效
集合注入
本章节为注入5中类型的实例,方便以后查阅
5中类型分别为:
int类型数组
String类型list
String类型的Set
Properties类型(没见过的类型)
bean中的配置如下:
- int类型数组
- String类型list
- String类型的Set
类型的map
- Properties类型(猜测是一对多和多对多)
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net