Spring bean 中的构造函数注入。是豆子了吗?
Spring constructor injection in bean. Is it a bean anymore?
我正在学习 spring 框架并且有一个非常基本的问题。我试图找到答案,但找不到,所以请耐心等待。我在 spring.
中看到了下面这种接线方式(这就是所谓的接线方式)
public class A {
private B b;
public A(B b) {
this.b = b;
}
public B getB() {
return b;
}
public void setB(B b) {
this.b = b;
}
}
public class B {
private String foo;
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
}
所以我知道这个自动装配是使用构造函数注入完成的。然后在 context.xml
我有以下
<bean id="a" class="A" autowire="constructor">
</bean>
<bean id="b" class="B" >
<property name="foo" value="foo1" />
</bean>
(我正在使用注释而不是 context.xml
学习配置,但在这里使用它是因为它似乎提供了更清晰的图片)。所以我的问题是,由于根据定义,bean 应该只有无参数构造函数和 getter 和 setter,不进行构造函数注入,因此取消它作为 bean 的资格?我在这里缺少什么明显的东西?
Bean
是一个加载项。虽然 JavaBean 规范至少在某一点上要求无参数构造函数,但这并不意味着 Spring beans 需要。
我正在学习 spring 框架并且有一个非常基本的问题。我试图找到答案,但找不到,所以请耐心等待。我在 spring.
中看到了下面这种接线方式(这就是所谓的接线方式)public class A {
private B b;
public A(B b) {
this.b = b;
}
public B getB() {
return b;
}
public void setB(B b) {
this.b = b;
}
}
public class B {
private String foo;
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
}
所以我知道这个自动装配是使用构造函数注入完成的。然后在 context.xml
我有以下
<bean id="a" class="A" autowire="constructor">
</bean>
<bean id="b" class="B" >
<property name="foo" value="foo1" />
</bean>
(我正在使用注释而不是 context.xml
学习配置,但在这里使用它是因为它似乎提供了更清晰的图片)。所以我的问题是,由于根据定义,bean 应该只有无参数构造函数和 getter 和 setter,不进行构造函数注入,因此取消它作为 bean 的资格?我在这里缺少什么明显的东西?
Bean
是一个加载项。虽然 JavaBean 规范至少在某一点上要求无参数构造函数,但这并不意味着 Spring beans 需要。