借助构造器注入初始化bean,有两种方案:
- 使用<constructor-arg>元素
1.注入引用类型
2.注入字面量类型
但是注入字面量值时,通常会有字面量类型的问题,所以需要通过添加字面量的类型来声明:
3.注入集合类型
也可以使用<set>元素:
集合也可以为引用类型:
2.使用Spring 3.0所引入的c-命名空间, 属性名以“c:”开头, 也就是命名空间的前缀。
1.注入引用类型
通过参数名称进行注入:
通过参数位置索引进行注入:
这个c-命名空间属性看起来似乎比上一种方法更加怪异。 我将参数的名称替换成了“0”, 也就是参数的索引。 因为在XML中不允许数字作为属性的第一个字符, 因此必须要添加一个下画线作为前缀。
如果构造器只有一个参数,还要另外一个解决方案,既不使用参数名称,也不使用参数位置,直接进行注入:
2.注入字面量类型
XML不允许某个元素的多个属性具有相同的名字。 因此, 如果有两个或更多的构造器参数的话, 我们不能简单地使用下画线进行标示。 但是如果只有一个构造器参数的话, 我们就可以这样做 。
3.注入集合类型
使用c-命名空间的属性无法实现装配集合的功能。