2012-05-10 71 views
5

是否可以使用Spring批註配置覆蓋導入的資源?如何使用Spring @Configuration重寫導入的資源?

的配置類:

@Configuration 
@ImportResource({"classpath:applicationContext.xml"}) 
public class CoreConfiguration { 

    @Resource(name = "classA") 
    private ClassA classA; 

    @Bean(name = "nameIWantToOverride") 
    private ClassB classB() { 
     return new ClassB("different setting"); 
    } 

} 

applicationContext.xml文件包括:

<bean name="classA" class="a.b.c.ClassA"> 
    <property name="nameIWantToOverride" ref="classB" /> 
</bean> 

如果CLASSA有CLASSB場,但我想它使用ClassB的我在我的定義配置類,這是可能的嗎?我嘗試切換順序,但沒有幫助。看起來XML優先,因爲當我運行一個實例化配置的簡單測試時,它永遠不會到達classB方法。如果我更改名稱,使其與xml文件中的bean不匹配,則它會到達classB方法。

我已經看到它可以用其他方式工作:Can spring framework override Annotation-based configuration with XML-based configuration?但是這個方向呢?由於這是更新的做事方式,我認爲你可以做到這一點。

我能做些什麼來解決這個問題?

編輯:用XML更新。假設classA有多個字段,但我只想替換它。

+0

我真的不知道你在問什麼。請詳細說明,也許有一些代碼。 – skaffman

+0

@skaffman我更新了它。我想用註釋配置覆蓋xml spring配置。 Sudhakar是否正確? – AHungerArtist

回答

5

您無法使用註釋來覆蓋spring xml配置。

Spring XML配置總是優先於註釋配置

+2

這太臭了(我想我只需要用我的重寫bean創建一個xml文件。 – AHungerArtist