这很容易用ApplicationListener。听听Spring的说法,我听到了这个ContextRefreshedEvent:
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
@Component
public class StartupHousekeeper implements ApplicationListener {
@Override
public void onApplicationEvent(final ContextRefreshedEvent event) {
// do whatever you need here
}
}
应用程序侦听器在Spring中同步运行。如果您想确保只执行一次代码,只需在组件中保留一些状态即可。
UPDATE
从Spring 4.2+开始,你也可以使用@EventListener注释来观察ContextRefreshedEvent(感谢@bphilipnyc指出这一点):
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
}
}