DI依赖注入(Spring)

两种注入方式介绍

DI(Dependency Injection)依赖注入 。
依赖注入,即组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。

简单来说,所谓的依赖注入其实就是,在创建对象的同时或之后,如何给对象的属性赋值。
如果对象由我们自己创建,这一切都变得很简单,例如:
在这里插入图片描述
或者:
在这里插入图片描述
如果对象由spring创建,那么spring是怎么给属性赋值的?spring提供两种方式为属性赋值:
(1).Set方式注入
(2).构造方法注入(spring大都使用这种方式)

1、set方式注入

普通属性注入

需求:通过Spring创建User实例,并为User实例的name和age属性(普通属性)赋值

1)、创建User类,声明name和age属性,并添加对应的setter和getter方法,以及toString方法

在这里插入图片描述

2)、在applicationContext.xml中声明User类的bean实例

在这里插入图片描述

3)、创建测试类—TestDI

在这里插入图片描述

由于这里没有为User对象的属性赋值,所以此时运行测试,结果为:
在这里插入图片描述

4)、修改applicationContext.xml中User实例的声明,为User实例注入属性

在这里插入图片描述

其中name属性的值,必须要和User类中所注入属性对应的get方法的名字去掉get后首字母变为小写的名字相同。
例如:为 User类中的age属性赋值,由于name属性对应的get方法名字为 getAge,当去调用get和 首字母变为小写后的名称为age,因此为age属性注入的配置内容为:
在这里插入图片描述
普通属性直接通过value注入即可。

5)、运行测试类TestDI,结果为:

上面通过spring提供的set方式对User对象的属性进行了赋值赋值,所以此时运行测试,结果为:
在这里插入图片描述

2、对象属性注入

需求:通过Spring创建User实例,并为User对象的userInfo属性(对象属性)赋值

1)、创建UserInfo类

在这里插入图片描述

2)、在applicationContext.xml中,声明UserInfo类的bean实例

在这里插入图片描述

3)、修改User类,声明userInfo属性,添加对应的setter和getter方法,并重新生成toString方法

在这里插入图片描述

4)、在applicationContext.xml中,将UserInfo对象作为值,赋值给User对象的userInfo属性

在这里插入图片描述
由于此处是将UserInfo对象作为值赋值给另一个对象的属性,因此ref属性的值,为UserInfo对象bean标签的id值。
对象属性通过ref属性注入。

5)、运行测试类TestDI,结果为:

在这里插入图片描述

3、构造方法注入

需求:通过Spring创建User对象,并为User对象的属性(name、age、UserInfo属性)赋值

1)、为User类声明构造函数

在这里插入图片描述

2)、修改applicationContext.xml文件,将set方式修改为构造方法注入。

在这里插入图片描述

其中,constructor-arg标签name属性的值必须和构造函数中参数的名字相同!
同样的,普通属性直接通过value注入即可;
对象属性通过ref属性注入。

3)、运行测试类TestDI,结果为:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值