SpringBoot整合Listener的两种方式:
1.通过注解扫描完成Listener组件的注册
- 创建一个类实现ServletContextListener (具体实现哪个Listener根据情况来判断)
- 在类上加入注解@WebListener
- 重写contextInitialized()与contextDestroyed()方法
- 编写启动类
- 增加注解@ServletComponentScan
@WebListener
public class FirstListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Listener...init....");
}
}
@SpringBootApplication
@ServletComponentScan
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
2.通过方法完成Listener组件注册
- 创建一个类实现ServletContextListener (具体实现哪个Listener根据情况来判断)
- 编写启动类
- 新增方法,方法类型为ServletListenerRegistrationBean<需要注册的Listener的类>
- 实例化ServletListenerRegistrationBean对象,构造时传入"需要注册的Listener的类"对象
- 返回该对象
- 该方法上加注解@Bean
@SpringBootApplication
public class App2 {
public static void main(String[] args) {
SpringApplication.run(App2.class, args);
}
/**
* 用于注册Listener
*/
@Bean
public ServletListenerRegistrationBean<SecondListener> getServletListenerRegistrationBean(){
ServletListenerRegistrationBean<SecondListener> srb = new ServletListenerRegistrationBean<SecondListener>(new SecondListener());
return srb;
}
}