头图

image.png

image.png

依赖注入常见有4种方法,
1.setter注入:

1.简单类型
2.引用类型

2.构造器注入:

1.简单类型
2.引用类型

image.png

image.png

image.png

image.png

1.1 setter注入简单类型


配置时各个位置的对应关系如下
image.png

1.2 setter注入引用类型

配置时各个位置的对应关系如下

实例意为BookServiceImpl中依赖了UserDaoImpl和BookDaoImpl
image.png

总结:
image.png

2.1 构造器注入引用类型

image.png

2.2 构造器注入简单类型

image.png
然而这样的形式并不符合我们spring的初衷:解耦
当我们改变UserDaoImpl的构造函数中的形参时,配置文件中的bean里面的name也需要修改成对应的名字,

于是引出了下面这种解耦的方法:
即不给定形参的名字, 而是用类型来对应
image.png
然而这种方法问题很显然, 当我们有2个相同的类型的参数要传给构造函数时, 方法失效.

于是引出第二种解决方法:
仅仅指定形参的位置来构成对应关系, 使用index="0", 表示指定为第一个形参
image.png

依赖注入方式选择

  • 1.强制依赖使用构造器进行,使用setter注入有概率不进行注入导致null对象出现
  • 2.可选依赖使用setter注入进行,灵活性强
  • 3.spring框架倡导使用构造器,第三方框架内部大多数采用构造器注入的形式进行数据初始化,相对严谨
  • 4.如果有必要可以两者同时使用,使用构造器注入完成强制依赖的注入,使用setter注入完成可选依赖的注入
  • 5.实际开发过程中还要根据实际情况分析,如果受控对象没有提供setter方法就必须使用构造器注入
  • 6.自己开发的模块推荐使用setter注入

总结

简而言之, 注入引用类型, 用ref, 注入简单类型, 用value

==========================================================

依赖自动装配

IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配自动装配方式
常见方式有4种, 按类型, 名称, 构造方法, 关闭
调用时要删除自己手动配置的依赖, 然后添加关键字autowire
image.png
如图, autowire的参数有5种, 分别为:通过名称, 通过类型, 使用构造方法, 默认, 关闭

  • 按类型(常用)

  • 按名称

  • 按构造方法

  • 不启用自动装配

依赖自动装配特征

  • 自动装配用于引用类型依赖注入,不能对简单类型进行操作
  • 使用按类型装配时( byType )必须保障容器中相同类型的bean唯一,推荐使用!!!
  • 使用按名称装配时( byName )必须保障容器中具有指定名称的bean,因变量名与配置耦合, 不推荐使用
  • 自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效

 集合注入

本章节为注入5中类型的实例,方便以后查阅
5中类型分别为:
int类型数组
String类型list
String类型的Set
<String,String>类型的map
Properties类型(没见过的类型)
image.png
bean中的配置如下:

  • int类型数组
    image.png
  • String类型list
    image.png
  • String类型的Set
  • image.png
  • <String,String>类型的map
    image.png
  • Properties类型(猜测是一对多和多对多)
  • image.png

奇天大郑
70 声望10 粉丝