Questo è facilmente possibile con un ApplicationListener
. Ho avuto questo lavoro l'ascolto di Primavera di 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
}
}
ascoltatori applicativi eseguiti in modo sincrono in primavera. Se vuoi assicurarti che il codice venga eseguito una volta sola, mantieni uno stato nel componente.
UPDATE
partire con la primavera 4.2+ è anche possibile utilizzare il @EventListener
annotazioni di osservare le ContextRefreshedEvent
(grazie al @bphilipnyc per la precisazione):
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
}
}
fonte
2013-06-11 06:26:49
qual è il trucco con @ Programmato? è esattamente quello che voglio! – chrismarx