【发布时间】:2013-07-03 05:46:37
【问题描述】:
假设我有这样的课程:
public class A {
private B b;
public A() {
}
// Some code calling methods in b.
}
如何通过 XML 配置将 B 的实例注入 A 而不在 Spring 中添加参数化构造函数?
我可以同时拥有参数化构造函数和设置器吗?
public class A {
private B b;
public A(B b) {
this.b = b;
}
public void setB(B b) {
this.b = b;
}
// Some code calling methods in b.
}
编辑:感谢所有答案。我的实际问题是我有这样的课程:
公开课 A {
private B b;
public A(B b) {
this.b = b;
}
// Some code calling methods in b.
}
并且出于向后兼容性的原因,我希望为上述类提供一个默认构造函数,而无需删除参数化构造函数。
所以,
- 当我添加一个 bean 时,bean 是否会自动注入到默认构造函数中?或者我应该在 XML 文件中添加其他配置以将其注入其中?
- 如果我添加一个 setter,我应该在 XML 中进行哪些额外的配置更改以及如何更改?
假设我有一个如下的 xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="name"
class="A">
<constructor-arg ref="B" />
</bean>
</beans>
【问题讨论】: