上文主要讲xml形式依赖注入的几种方式xml形式三种依赖注入方式,所举例子均是简单类型。本文主要研究一下非简单类型的注入。
集合类型的注入:
数组类型array:实体类Teacher类中有一个属性为数组类型
为该类注入spring容器中
这样就成功注入了。
若是list类型该如何注入
若是set类型
array,list,set各自有自己的标签,但是也可以混着使用,不过不推荐。
map类型
注意key-value对中的key的赋值。
properties类型如下注入
如何处理空值:空字符串 “” 以及null
value属性注入和value子标签的注入(set和construction注入)
以上全部都是简单类型的注入,考虑一下一个类依赖另一个类,应该如何注入呢
如Course类中有属性类型是Teacher
注入如下
这里使用的不再是value而是ref 其中ref中的值为id为teacher的bean,即之前已经注入的bean。
最后讨论一下自动装配(只适用于ref类型)
这样它就会在ioc容器中自动寻找其他bean的id值等于该bean的属性名的bean,然后自动注入。
其中有byname bytype constructor等方式。一般采用byname,本质是byid
Bytype : 其他bean的类型(class)是否 与 该类的ref属性类型一致。(弊端明显)
constructor:其他bean的类型(class)是否 与 该类的的构造方法参数的类型一致。(弊端如同bytype)
命名空间 default-autowire=“” 是对整个配置文件所有的bean进行自动装配
子标签可以覆盖全局性。也就是某个bean不用默认自动装配方式也可以
不建议多用 降低代码可读性。
才疏学浅之处,切莫在意。
——2019.5.29 上午