2010-11-22 20 views

Respuesta

32

Spring le permite redefinir el mismo nombre de bean varias veces, y toma la última definición de bean procesada para un nombre determinado como la que gana. Entonces, por ejemplo, podría tener un archivo XML que defina sus beans centrales e importarlos en un archivo XML específico del cliente, que también redefine algunos de esos beans. Sin embargo, es un poco frágil, ya que no hay un mecanismo para decir específicamente "esta definición de frijol es una anulación".

He encontrado que la forma más limpia de manejar esto es usando el new @Bean-syntax introduced in Spring 3. En lugar de definir beans como XML, los define en Java. Por lo tanto, sus beans centrales se definirían en una sola clase anotada @Bean, y las configuraciones de su cliente crearían una subclase que anularía los beans apropiados. Esto le permite usar anotaciones java estándar @Override, indicando explícitamente que una definición dada de bean está siendo anulada.

+0

¿está seguro de que puede volver a definir un bean con el mismo ID/nombre en una ctx secundaria? –

+9

mirando esta página http://stackoverflow.com/tags/spring/topusers Creo que él sabe de lo que está hablando –

+0

gracias. No estoy cuestionando la corrección de su publicación. Quería cierta seguridad en esa afirmación particular, ya que mi recurso dev me dijo que esto no es posible en las nuevas versiones de la primavera, es decir, 2.5.xy posteriores. Trató de redefinir el bean (que se definió en el contexto principal) en un contexto secundario con el mismo nombre y recibió un error durante el inicio. –

Cuestiones relacionadas