0
如果我指定什麼應該被注入的屬性,像註解避免setter方法?
<property name="xxx" ref="some_bean" />
或
<property name="xxx">
<bean .../>
</property>
然後我必須寫一個setter方法。
我可以使用一些註釋來避免這種情況,如@autowired
?
如果我指定什麼應該被注入的屬性,像註解避免setter方法?
<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"/>
JavaConfig:
@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;
}
我認爲這比添加setter方法更復雜。其實我想要的是省略不必要代碼的簡單方法。 – Anderson
在專用字段上使用'@ Autowired',然後(這裏是最後一個例子) – kryger