0%

Spring-构造函数依赖注入

Spring 的构造函数依赖注入中配置 bean.xml 需要注意的。

函数依赖注入的引入

为了代替原本的:

1
2
3
4
5
6
public class B{
A a;
public B(){
this.a = new A();
}
}

如今可以使用对带参构造进行依赖注入的写法:

1
2
3
4
5
6
public class B{
A a;
public B(A a){
this.a = a;
}
}

基础的 bean.xml 配置

一般仅一个参数的构造方法

对于上面的例子bean可配置为 ( 以下仅核心部分 )

1
2
3
4
5
<bean id="a" class="..."></bean>

<bean id="b" class="...">
<constructor-arg ref="a" />
</bean>

多参数匹配方式

可能会有多参数的构造方法的情况:

1
2
3
public B(int num , A a , String name){
...
}

提一下 拥有的属性有 type,value,index,ref,name 灵活运用。

按顺序匹配参数

1
2
3
4
5
<bean id="b" class="...">
<constructor-arg value="1" />
<constructor-arg ref="a" />
<constructor-arg value="BBBA" />
</bean>

缺点:匹配顺序比较麻烦,不利于阅读

利用下标匹配参数

1
2
3
4
5
<bean id="b" class="...">
<constructor-arg index="0" value="1" />
<constructor-arg index="1" ref="a" />
<constructor-arg index="2" value="BBBA" />
</bean>

缺点:虽然比顺序好操作,但无法解决多种构造的情况

使用类型匹配

1
2
3
4
5
<bean id="b" class="...">
<constructor-arg type="int" value="1" />
<constructor-arg ref="a" />
<constructor-arg type="java.lang.String" value="BBBA" />
</bean>

这里再提一下:String 不是八大基本数据类型

也可以配合 name , index 达到更加准确的匹配。