76 votes

Spring : assurez-vous qu'un bean particulier est initialisé en premier

J'ai une bibliothèque qui fait l'installation et la configuration du runtime de log4j (pas de log4j.properties ou de log4j.xml). J'ai défini un bean avec une classe appelée MyLoggerFactory et je veux que ce soit le premier bean à être initialisé à l'aide de spring. J'ai vu qu'un problème avait déjà été déposé avec Spring pour prendre en charge l'ordre d'initialisation, mais je me demandais s'il existait un moyen de marquer un bean comme premier bean à être initialisé par le conteneur de printemps?

19voto

bla Points 863

Vous pouvez @Autowired une @Configuration dans la @Configuration principale

 @Configuration
@Import(BusinessConfig.class, EarlyBeans.class)
public class MainConfiguration {

    // The bean defined in EarlyBean will be loaded before 
    // most beans references by MainConfiguration, 
    // including those coming from BusinessConfig
    @Autowired
    EarlyBeans earlyBeans;

}

@Configuration
public class EarlyBeans {
    @Bean
    public Void earlyBean(ApplicationContext appContext) {
        // .getBeansOfType allows to call for beans which might not exist
        appContext.getBeansOfType(TechnicalBean.class);

        return null;
    }

}

4voto

Miguel Prz Points 8136

Il s'agit d'une fonctionnalité demandée mais non résolue. Vous pouvez utiliser depend-on mais c'est trop verbeux. Suivez ce lien pour plus d'informations : https://jira.springsource.org/browse/SPR-3948

1voto

Hari M Points 117

Vous pouvez diviser votre contexte d'application en plusieurs et utiliser l'importation dans le contexte d'application principal. Vous pouvez placer les principaux paramètres d'environnement en premier dans l'ordre d'importation, puis continuer à ajouter d'autres fichiers.

Cela pourrait être comme ci-dessous.

 <!-- Import environment properties settings. -->
<import resource="Spring-Env.xml"/>
<!-- Import All the other Application contexts. -->
<import resource="Spring-MainApplicationContext.xml"/>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X