spring boot 整合 Listener 一共有两种方式。
注解方式
-
在启动类上增加
ServletComponentScan
注解。@SpringBootApplication @ServletComponentScan public class ListenerApplication { public static void main(String[] args) { SpringApplication.run(ListenerApplication.class, args); } }
-
在自定义监听器上增加
WebListener
注解。@Slf4j @WebListener public class MyServletContextListener implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { log.info("服务器开启"); } public void contextDestroyed(ServletContextEvent sce) { log.info("服务器关闭"); } }
-
启动 spring boot。
会看到服务器开启
打印出。
非注解方式
- 在自定义监听器。
@Slf4j public class MyServletContextListener implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { log.info("服务器开启"); } public void contextDestroyed(ServletContextEvent sce) { log.info("服务器关闭"); } }
- 配置类。
@Configuration public class ListenerConfig { @Bean public ServletListenerRegistrationBean<MyServletContextListener> getServletListenerRegistrationBean(){ ServletListenerRegistrationBean<MyServletContextListener> bean= new ServletListenerRegistrationBean<MyServletContextListener>(new MyServletContextListener()); return bean; } }
- 启动 spring boot。
会看到服务器开启
打印出。
非注解方式配置多个监听器
@Configuration
public class ListenerConfig {
/**
* 服务器监听器
*/
@Bean
public ServletListenerRegistrationBean<MyServletContextListener> getServletListenerRegistrationBean(){
ServletListenerRegistrationBean<MyServletContextListener> bean= new ServletListenerRegistrationBean<MyServletContextListener>(new MyServletContextListener());
return bean;
}
/**
* 请求监听器
*/
@Bean
public ServletListenerRegistrationBean<MyHttpServletRequestListener> getMyHttpServletRequestListener() {
ServletListenerRegistrationBean<MyHttpServletRequestListener> bean= new ServletListenerRegistrationBean<MyHttpServletRequestListener>(new MyHttpServletRequestListener());
return bean;
}
/**
* 会话监听器
*/
@Bean
public ServletListenerRegistrationBean<MySessionListener> getMySessionListener() {
ServletListenerRegistrationBean<MySessionListener> bean= new ServletListenerRegistrationBean<MySessionListener>(new MySessionListener());
return bean;
}
}
因使用spring boot,配置会话监听器时,未监听到,因此配置会话监听器不起作用,后续如果找到方法,会进行更新。