如果要在spring所有bean装载完成之后调用某段代码时,可以让一个bean实现接口:
org.springframework.context.ApplicationListene
然后实现他的
public void onApplicationEvent(ApplicationEvent event)
方法
官方文档说:
那么每当一个ApplicationEvent
发布到ApplicationContext
时,这个bean就得到通知。实质上,这是标准的Observer 设计模式。
事件有很多种,这里就不列出来了,想了解可以去看文档,在我的这种需求下,要捕获ContextRefreshedEvent事件,然后做你想做的事情:
public void onApplicationEvent(ApplicationEvent event) {
if(event instanceof ContextRefreshedEvent){
Runnable t = new Runnable() {
@Override
public void run() {
long starttime = System.currentTimeMillis();
dispenseFeed.despense();
while (true) {
long curtime = System.currentTimeMillis();
if (curtime - starttime > 20000) {
System.out.println("分发开始");
dispenseFeed.despense();
starttime = curtime;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
};
Thread runnablet=new Thread(t);
runnablet.start();
System.out.println("线程起动");
}
}