鑑於我有一個Spring bean配置爲如何通過名字覆蓋春天服務組件,使用註釋只有
@Service("myService")
public class DefaultService extends MyService {
}
和一類使用這個bean
public class Consumer {
@Autowired
@Qualifier("myService")
private MyService service;
...
}
現在我想我的項目,那包括前面的類別,以便Consumer
另一個實施MyService
被注入。因此,我想覆蓋豆myService
@Service("myService")
public class SpecializedService implements MyService {
}
導致Consumer
目前正在實施的SpecializedService
而不是DefaultService
一個實例。根據定義,我不能在Spring容器中擁有兩個同名的bean。我怎麼能告訴春天,新服務的定義應該覆蓋老的?我不想修改Consumer
類。
謝謝,威利。我們最終選擇了您的解決方案,因爲我們也出於維護原因(我們正在討論數百個服務)決定將每個服務的列表保留在一個文件中 - 即Spring bean配置。只定義id和classname並不是太痛苦,因爲只使用註釋更具誘惑力。 – 2011-04-07 08:37:05