如果我指定应该注入属性的内容,例如
<property name="xxx" ref="some_bean" />
或者
<property name="xxx">
<bean .../>
</property>
那么我必须编写一个setter方法。
我可以使用一些注释来避免这种情况@autowired
吗?
您可以通过构造函数注入来做到这一点。执行此操作的 3 种主要方法:
XML:
<bean id="beanA" class="com.BeanA">
<constructor-arg ref="beanB"/>
</bean>
<bean id="beanB" class="com.BeanB"/>
Java配置:
@Configuration
public class MyConfig {
@Bean
public BeanA beanA() {
return new BeanA(beanB());
}
@Bean
public BeanB beanB() {
return new BeanB();
}
}
自动装配:
@Component
public class BeanA {
private final BeanB beanb;
// This assumes that there is a BeanB in your application context already
@Autowired
public BeanA(final BeanB beanB) {
this.beanB = beanB;
}
}
您可以进一步使用自动装配,并直接连接到现场:
@Component
public class BeanA {
// This assumes that there is a BeanB in your application context already
@Autowired
private final BeanB beanb;
}