Cela se fait facilement avec un ApplicationListener
. J'ai réussi à le faire fonctionner en écoutant les chansons de Spring. ContextRefreshedEvent
:
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
@Component
public class StartupHousekeeper implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(final ContextRefreshedEvent event) {
// do whatever you need here
}
}
Les écouteurs d'application s'exécutent de manière synchrone dans Spring. Si vous voulez vous assurer que votre code n'est exécuté qu'une seule fois, il suffit de conserver un certain état dans votre composant.
UPDATE
À partir de la version 4.2+ de Spring, vous pouvez également utiliser la fonction @EventListener
pour observer le ContextRefreshedEvent
(merci à @bphilipnyc pour l'avoir signalé) :
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
@Component
public class StartupHousekeeper {
@EventListener(ContextRefreshedEvent.class)
public void contextRefreshedEvent() {
// do whatever you need here
}
}
2 votes
Quel est le truc avec @Scheduled ? c'est exactement ce que je veux !