我有什麼已知的方式來基於某些條件在春季IoC容器中注入bean。例如。我有兩個豆子:春季IoC容器中的條件
<bean id="aaa" class="My"/>
<bean id="bbb" class="My"/>
...並希望根據以下規則在另外一個bean注入它:
注入「AAA」如果「AAA」不爲空或注入「BBB」另一種情況
感謝
我有什麼已知的方式來基於某些條件在春季IoC容器中注入bean。例如。我有兩個豆子:春季IoC容器中的條件
<bean id="aaa" class="My"/>
<bean id="bbb" class="My"/>
...並希望根據以下規則在另外一個bean注入它:
注入「AAA」如果「AAA」不爲空或注入「BBB」另一種情況
感謝
您可以使用JavaConfig - 那裏,你可以使用Java代碼來實現這個邏輯。我從來沒有使用過它,但服用從文檔的例子:
@Configuration
public class ServiceConfig {
private @Resource(name="aaa") Aaa aaa;
private @Resource(name="bbb") Aaa bbb;
public @Bean TransferService transferService() {
TransferService service = new TransferServiceImpl();
if (aaa != null) {
service.setProperty(aaa);
} else {
service.setProperty(bbb);
}
return service;
}
}
另一種選擇是使用FactoryBean
來封裝邏輯 - 工廠bean可以查找在上下文中的豆,如果找到了 - 回報它。如果找不到 - 查找另一個bean。
...然後在XML中聲明'ServiceConfig'本身就是一個bean。 – skaffman 2011-03-23 16:21:58
如果您使用的是3.0版本,則可以使用SpEL - Expression langauge support來實現。
您能否給我們一個適合問題的例子,而不是僅僅鏈接到文檔? – skaffman 2011-03-23 16:08:19
我已經使用FactoryBean來解決這個問題。 – Raman 2011-03-31 15:32:12