2012-05-10 20 views
5

Bahar ek açıklama yapılandırmasını kullanarak içe aktarılan kaynakları geçersiz kılmak mümkün mü?İçe aktarılan bir kaynağı Spring @Configuration kullanarak nasıl geçersiz kılarsınız?

yapılandırma sınıfı:

@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 içerir:

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

Classa bir ClassB alanı vardır ama ben tanımlamak ClassB kullanmak istiyorsanız benim yapılandırma sınıfı, bu mümkün mü? Siparişi değiştirmeyi denedim ama bu yardımcı olmadı. Basit bir yapılandırma örneği çalıştırdığım zaman XML'in önceliği var gibi görünüyor, asla classB yöntemine ulaşmıyor. Adı değiştirdiğimde, xml dosyasındaki bean ile eşleşmiyorsa, classB yöntemine ulaşır.

Başka şekilde çalışabileceğini gördüm: Can spring framework override Annotation-based configuration with XML-based configuration? ama bu yöne ne dersiniz? Bu, işleri yapmanın daha yeni yolu olduğundan, bunu yapabileceğinizi düşünürdüm.

Bunu çözmek için ne yapabilirim?

Düzenleme: XML ile güncelleştirildi. Sınıf A'nın birden çok alanı olduğunu varsayalım, ancak yalnızca birini değiştirmek istiyorum.

+0

Gerçekten ne sorduğunuzu söyleyemiyorum. Lütfen bazı kodlarla detaylandırın. – skaffman

+0

@skaffman Güncelledim. Ek açıklama yapılandırmasıyla xml yay yapılandırmasını geçersiz kılmak istiyorum. Sudhakar doğru mu? – AHungerArtist

cevap

5

Ek açıklama kullanarak yay xml yapılandırmasını geçersiz kılabilirsiniz.

Yay XML yapılandırması her zaman ek açıklama yapılandırmasına öncelik verir

+2

Bu da kokuyor: (Ben sanırım sadece bürünmüş fasulyemle bir xml dosyası oluşturmam gerekecek. – AHungerArtist

İlgili konular