SpringFramework——DI


DI就是依赖注入,它在以下两种情况下发生:

  • 用户第一次调用getBean()方法时,ioc容器出发依赖注入。
  • 当用户在配置文件中将 bean 元素配置了 lazy-init=false 属性时,即让容器在解析注册Bean定义时进行预实例化,触发依赖注入。

依赖注入的数据

依赖注入的有三类数据类型:

  • 基本数据类型和string
  • bean类型(由配置文件或者注解配置的)
  • 复杂类型/集合类型

依赖注入的方法

1.使用构造函数注入
在这里插入图片描述
在这里插入图片描述类中含有有参构造函数,在配置文件中,该类的bean标签里使用constructor-arg 标签进行数据的注入。constructor-arg 标签的属性:

  • name:构造函数参数的名称;
  • type:参数的数据类型;
  • index:参数的索引,从0开始
  • value:用于提供基本类型和string类型的数据;
  • ref:用于指定其他bean类型数据,就是在spring的ioc容器里出现过的bean对象。如上图中的Date对象。

优势:在获取bean对象时注入数据是必须的操作,否则对象无法创建。
弊端:改变了bean对象的实例化方法,使创建对象时如果用不到这些数据也必须提供。

2.使用set方法注入数据

在这里插入图片描述
在这里插入图片描述

使用set方法注入更常用。
要利用到bean标签中使用property标签。
property标签的属性:

  • name:用于指定注入时所调用的set方法名称
  • value:用于提供基本类型和string类型数据
  • ref:用于指定其他的bean类型数据

优势:创建对象时没有明确限制,可以直接使用默认构造函数。
弊端:如果某个成员必须有值,但是set方法有可能没有执行。

3.对复杂类型的数据注入
用于给List结构集合注入的标签:list , array , srt
用于给Map结构集合注入的标签:map , props

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值