java - sts - Orden de inicialización de Spring Bean
spring tutorial (4)
En mi humilde opinión, debe esperar hasta que solucionen https://jira.spring.io/browse/SPR-3948
Una forma probable es usar el atributo depende de. Pero, de nuevo, no quiero agregar este atributo en el resto de los frijoles (este es probablemente el último recurso para mí).
En realidad, no necesita usar dependencias en CADA Y CADA BEAN en todas y cada una de las applicationContext.xml.
Utilice <import />
en todos los applicationContext.xml "lower-lvel" para importar el top applicationContext.xml.
Y use el atributo depends-on en cada definición de bean solo en la parte superior de applicationContext.xml, excepto en el <bean />
que quiera cargar primero.
Tengo varios archivos de contexto. El requisito es: un Bean particular (que realiza algunos cambios de configuración) para ser inicializado primero entre el resto de los beans.
¿Hay alguna forma de cargar este frijol primero?
Una opción es usar el atributo depends-on`. Pero eso requeriría actualizar todo el resto de los granos, por lo que parece no ser la mejor solución.
¿Tenemos mejores opciones?
Me las arreglé para influir en el orden de inicio del frijol al anotar mi frijol con @Order
: ver http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/annotation/Order.html
No soy un experto en primavera y es probable que alguien que grite lo grite. Pero hasta entonces...
Donde haya espacio para la ambigüedad, supongo que Spring carga / aplica cosas en el orden en que lo encuentra en los archivos de configuración. Por lo tanto, como una primera y más simple aproximación, trataré de asegurarme de que lo que desea inicializar primero sea una de las primeras cosas en sus archivos de configuración.
Si todo es jerárquico, querrá que sus "primeras" configuraciones estén en el archivo "principal" antes de que se invoquen las otras o, si es posible, en el primer archivo invocado.
Puede ser significativo exigir que se ordenen beans, típicamente para beans técnicos (por ejemplo, agregando MBeans) que se cargarán antes de business beans (tal como se propone en http://jira.springframework.org/browse/SPR-3948 )
El uso de BeanPostProcessor es otra forma de proporcionar un poco de orden en sus beans. Compruebe AbstractApplicationContext.refresh () para ver cómo se aplica.