Ordem de boot do bean de primavera

Eu tenho vários arquivos de contexto. O requisito é: um determinado Bean (que faz algumas alterações de configuração) seja inicializado primeiro entre os demais beans.

Existe uma maneira de obter esse bean carregado primeiro?

Uma opção é usar o atributo depends-on`. Mas isso exigiria a atualização de todo o restante dos beans, portanto, não parece ser a melhor solução.

Nós temos melhores opções?

IMHO você deve esperar até que eles consertem https://jira.spring.io/browse/SPR-3948

Uma maneira provável é usar o atributo depends-on. Mas, novamente, eu não quero adicionar este atributo em todo o resto dos beans (este é provavelmente o último recurso para mim).

Na verdade, você não precisa usar dependencies em EACH AND EVERY BEAN em cada e todo applicationContext.xml.

Use em todo o applicationContext.xml “lower-lvel” para importar o applicationContext.xml superior.

E use o atributo depends-on em cada e sempre definição de bean somente no applicationContext.xml superior, exceto o que você deseja carregar primeiro.

Pode ser significativo exigir ordenação de beans, normalmente para beans técnicos (por exemplo, adicionar MBeans) a serem carregados antes dos beans comerciais (assim como é proposto em http://jira.springframework.org/browse/SPR-3948 )

Usar o BeanPostProcessor é outra maneira de fornecer alguma ordem em seus beans. Verifique AbstractApplicationContext.refresh () para ver como é aplicado.

Consegui influenciar a ordem de boot do bean anotando meu bean com @Order : consulte http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/annotation/Order.html

Eu não sou um especialista em Spring e provavelmente será criticado por alguém que é. Mas até então …

Onde há espaço para a ambigüidade, eu acho que o Spring carrega / aplica coisas na ordem em que o encontra nos arquivos de configuração. Assim, como uma primeira e mais simples aproximação, eu tentaria garantir que a coisa que você deseja inicializar primeiro seja uma das primeiras coisas em seus arquivos de configuração.

Se tudo for hierárquico, você desejará que suas “primeiras” configurações estejam no arquivo “principal” antes que as outras sejam chamadas ou, se possível, no primeiro arquivo chamado.