在项目中, 会遇到要在容器加载完就做一些初始化, 例如Quartz的监听器重新注册(Quartz监听器在RAM中的, Web容器重启或关闭会丢失)等需求。

 
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;


public class InitialSchedulerListner implements ApplicationListener<ContextRefreshedEvent> {  
	
    @Override  
    public void onApplicationEvent(ContextRefreshedEvent event) {
     // 在web 项目中,系统会存在两个容器,一个是root application context ,另一个就是项目的projectName-servlet context(root application context的子容器)
    // Return the parent context, or null if there is no parent and this is the root of the context hierarchy
      if(event.getApplicationContext().getParent() == null){ // 保证了容器只执行一次.. 
        try { 
            // 业务逻辑
         } catch (Exception e) {
             } 
         } 
     }
}



 
代码写完记得注入给Spring管理: 
<bean class="com.wenniuwuren.*.InitialSchedulerListner" />


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐