2012-05-10 12 views
5

¿Es posible anular los recursos importados utilizando la configuración de anotación de Spring?Cómo anular un recurso importado usando Spring @Configuration?

La clase de configuración:

@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"); 
    } 

} 

El applicationContext.xml incluye:

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

Si classA tiene un campo ClassB pero lo quiero usar la ClassB defino en mi clase de configuración, ¿es eso posible? Intenté cambiar el orden pero eso no ayudó. Parece que XML tiene prioridad, ya que cuando ejecuto una prueba simple de instanciar la configuración, nunca alcanza el método classB. Si cambio el nombre para que no coincida con el bean en el archivo xml, entonces llega al método classB.

He visto dónde puede funcionar a la inversa: Can spring framework override Annotation-based configuration with XML-based configuration?, pero ¿qué pasa con esta dirección? Dado que esta es la forma más nueva de hacer las cosas, creo que sería capaz de hacer esto.

¿Qué puedo hacer para resolver esto?

Editar: Actualizado con XML. Supongamos que classA tiene múltiples campos, pero solo quiero reemplazar el uno.

+0

No puedo decir lo que está pidiendo. Por favor, elabore, quizás con algún código. – skaffman

+0

@skaffman Lo actualicé. Quiero anular la configuración de muelles xml con la configuración de anotación. ¿Es Sudhakar correcto? – AHungerArtist

Respuesta

5

No puede anular la configuración del resorte xml mediante la anotación.

Spring La configuración XML siempre tiene prioridad para la configuración de anotación

+2

Eso apesta :(Supongo que tendré que crear un archivo xml con mi bean reemplazado. – AHungerArtist

Cuestiones relacionadas