import org.slf4j.Logger;
import org.springframework.beans.*;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.*;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
import org.springframework.web.context.ServletContextAware;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.servlet.ServletContext;
/**
* @version:
* @author
*/
@Component
public class StartupListener implements ApplicationContextAware, ServletContextAware,
InitializingBean, ApplicationListener<ContextRefreshedEvent> {
@Override
public void setApplicationContext(ApplicationContext ctx) throws BeansException {
System.out.println("1 => StartupListener.setApplicationContext");
}
@Override
public void setServletContext(ServletContext context) {
System.out.println("2 => StartupListener.setServletContext");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("3 => StartupListener.afterPropertiesSet");
}
@Override
public void onApplicationEvent(ContextRefreshedEvent evt) {
System.out.println("4.1 => MyApplicationListener.onApplicationEvent");
if (evt.getApplicationContext().getParent() == null) {
System.out.println("4.2 => MyApplicationListener.onApplicationEvent");
}
Runnable runnable = new Runnable() {
public void run() {
// task to run goes here
System.out.println("Hello !!");
}
};
ScheduledExecutorService service = Executors
.newSingleThreadScheduledExecutor();
// 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
service.scheduleAtFixedRate(runnable, 20, 5, TimeUnit.SECONDS);
}
}
最后一步别忘了,在spring-config.xml中加入自定义的bean,如下面的例子:
<!--初始化操作的bean 在spring初始化完成的时候执行这个操作 -->
<bean class="com.xxx.StartupListener"/>
https://blog.csdn.net/renyisheng/article/details/50803875
https://blog.csdn.net/wscrf/article/details/78788833
https://blog.csdn.net/oChuan1/article/details/52421536?utm_source=blogxgwz2