依赖注入的9种情况
依赖注入:是为当前类中的属性赋值的过程
setter注入:
在配置文件中添加bean
在测试类中添加测试方法
测试结果如下所:
构造器注入:
在配置文件中添加bean
在测试类中添加测试方法
测试结果如下所示:
注意:
constructor-arg标签还有两个属性可以进一步描述构造器参数:
1.index属性:指定参数所在位置的索引(从0开始)
2.name属性:指定参数名
特殊值处理:
1.字面量的理解:
int b=11;
声明一个变量b,初始化为0,此时b作为一个变量的名;当引用b时,则实际取出的值是11,
但当b是带有引号的'b'时,则代表b这个字母本身,这就是字面量。所以字面量没有引申含义,其就是所看到的数据本身。
2.null值:
为某一个成员变量赋值为null时,不能用value=null 需要在null标签
3.xml实体:
例如<或>符号需要输出时,可以使用xml实体类代替
4.CDATA节:
C是代表Character,是文本、字符的含义,CDATA表示纯文本数据;CDATA可以代替xml实体的方式
在配置文件中添加bean
编写测试方法:
测试结果如下:
为类类型属性赋值(引用外部的bean):
在pojo包中添加Clazz的类
在Clazz类中添加属性
在Student类中添加Clazz属性
在配置文件中添加bean对象
在测试类中添加测试方法
测试结果如下所示:
为类类型的属性赋值(级联方式和内部bean):
级联方式:
在配置文件中添加bean
添加测试方法:
测试结果如下所示:
内部bean:
在配置文件中添加bean
在测试类中添加测试方法:
测试结果如下所示:
注意:内部bean只能在当前bean的内部使用,不能直接通过IOC容器获取
为数组类型属性赋值:
在Student类中添加hobby的属性:
并添加其get和set方法并重写toString方法
在配置文件中添加bean
在测试类中添加测试方法
测试结果如下所示:
为list集合类型的属性赋值:
在Clazz类中添加List集合
并添加其set和get以及toString方法
第一种方式:使用内部标签为list集合赋值
在配置文件中添加bean
在测试类中添加测试方法:
测试结果如下所示:
第二种方式:配置一个集合list的bean需要使用util约束
在配置文件中添加bean和util约束
测试方法:
测试结果如下所示:
为map集合类型的属性赋值:
在pojo中添加Teacher类
在Student集合中添加Map集合
添加其set和get方法并重写toString方法
第一种方式:
在配置文件中添加bean
测试方法:
测试结果如下:
第二种方式:使用util约束
在配置文件中添加bean
测试方法:
测试结果:
p命名空间:
注意:
不带ref是给字面量进行赋值
带ref是给类类型的属性去引用一个bean的id
在配置文件中添加bean
测试方法:
测试结果: