Quelle est la meilleure façon d'exécuter une classe Java au démarrage de l'application à l'aide de Spring MVC?
Il n'y a pas nécessairement de "meilleure" façon. Comme d'habitude, il existe de nombreuses façons de le faire, et le "meilleur" est celui qui convient le mieux à votre projet:
En supposant que votre contexte est chargé au démarrage, créez un bean dans votre contexte d'application Spring avec une méthode init explicitement indiquée dans la configuration XML (ou implémentez Springs InitializingBean). Si le chargement paresseux est activé, vous devrez vous assurer que ce bean n'est pas paresseux.
<bean name="starter" init-method="start" class="com.my.StarterBean" lazy="false" />
(veuillez revérifier les paramètres dans la documentation).
Si votre contexte n'est pas chargé au démarrage, vous pouvez enregistrer un écouteur de contexte de serveur (faisant partie de l'API Servlet, pas Spring).
Vous pouvez utiliser l'une des implémentations:
1) Implémentez l'interface InitializingBean
. Cette approche est autorisée à charger tous vos beans, puis appelez la méthode afterPropertiesSet
.
@Override
public void afterPropertiesSet() throws Exception {
init();
}
2) Utilisation de l'annotation du JSR-250 @PostConstruct
. Cette approche n'attendra pas le chargement des haricots de printemps.
@PostConstruct
public void init() {
}