本文继续介绍SpringBoot整合Listener的步骤
&esmp;创建一个自定义的Listener,监听ServletContext的初始化和销毁的行为,具体如下:
/**
* @program: springboot-01-servlet
* @description: SpringBoot整合Listener第一种方式
* @author: 波波烤鸭
* @create: 2019-05-11 16:01
*/
@WebListener
public class FisrtListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("FirstListener:Servlet容器初始化...");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("FirstListener:Servlet容器被销毁了");
}
}
启动还是和之前一样,没什么区别。
@SpringBootApplication
//在 springBoot 启动时会扫描@WebServlet,并将该类实例化
@ServletComponentScan()
public class Springboot01ServletApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot01ServletApplication.class, args);
}
}
通过启动类启动程序,观察控制台。
自定义的监听器监控到了Servlet容器加载的过程~
创建自定义的监听器,不要添加@WebListener注解
/**
* @program: springboot-01-servlet
* @description: SpringBoot整个Servlet的第二种方式的启动类
* @author: 波波烤鸭
* @create: 2019-05-11 15:04
*/
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
/**
* 注册自定义的监听器
* @return
*/
@Bean
public ServletListenerRegistrationBean getServletListenerRegistrationBean(){
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new SecondListener());
return bean;
}
}
创建启动类,同时创建注册Listener的方法,如下
/**
* @program: springboot-01-servlet
* @description: SpringBoot整个Servlet的第二种方式的启动类
* @author: 波波烤鸭
* @create: 2019-05-11 15:04
*/
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
/**
* 注册自定义的监听器
* @return
*/
@Bean
public ServletListenerRegistrationBean getServletListenerRegistrationBean(){
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new SecondListener());
return bean;
}
}
启动程序,观察控制台的输出。
输出结果看到不光第二个Listener触发了,而且前面的Listener也触发了。搞定~