spring boot配置监听器listener
Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是:做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。用于监听servletContext、HttpSession和servletRequest等域对象的创建和销毁事件
springboot中创建监听器两种方式:
一、通过代码方式注入过滤器,
@Configuration 类中
@Bean
public ServletListenerRegistrationBean servletListenerRegistrationBean(){
ServletListenerRegistrationBean servletListenerRegistrationBean = new ServletListenerRegistrationBean();
servletListenerRegistrationBean.setListener(new IndexListener());
return servletListenerRegistrationBean;
}
监听器具体类:
public class MyListen implements HttpSessionListener {
public static int online = 0;
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("session监听器初始化");
online++;
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("session监听器销毁");
}
}
二 注解方式
@WebListener
public class MyListen implements HttpSessionListener {
public static int online = 0;
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("session监听器初始化");
online++;
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("session监听器销毁");
}
}
启动类上使用@ServletComponentScan,自动扫描带有(@WebServlet, @WebFilter, and @WebListener)注解的类,完成注册。
@SpringBootApplication
@MapperScan("com.baomidou.ant.mapper")
@ServletComponentScan
public class PlusApplication {
public static void main(String[] args) {
SpringApplication.run(PlusApplication.class, args);
}
}
Controller:(必须调用实例化HttpSession 才会调用监听器)
@Controller
public class SslController {
@RequestMapping("/")
public String index(HttpSession session) {
return "index";
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
1.ServletContextListener – 监听servletContext对象的创建以及销毁
1.1 contextInitialized(ServletContextEvent arg0) -- 创建时执行
1.2 contextDestroyed(ServletContextEvent arg0) -- 销毁时执行
2.HttpSessionListener – 监听session对象的创建以及销毁
2.2 sessionCreated(HttpSessionEvent se) -- 创建时执行
2.2 sessionDestroyed(HttpSessionEvent se) -- 销毁时执行
3.ServletRequestListener – 监听request对象的创建以及销毁
3.1 requestInitialized(ServletRequestEvent sre) -- 创建时执行
3.2 requestDestroyed(ServletRequestEvent sre) -- 销毁时执行
4.ServletContextAttributeListener – 监听servletContext对象中属性的改变
4.1 attributeAdded(ServletContextAttributeEvent event) -- 添加属性时执行
4.2 attributeReplaced(ServletContextAttributeEvent event) -- 修改属性时执行
4.3 attributeRemoved(ServletContextAttributeEvent event) -- 删除属性时执行
5.HttpSessionAttributeListener --监听session对象中属性的改变
5.1 attributeAdded(HttpSessionBindingEvent event) -- 添加属性时执行
5.2 attributeReplaced(HttpSessionBindingEvent event) -- 修改属性时执行
5.3 attributeRemoved(HttpSessionBindingEvent event) -- 删除属性时执行
6.ServletRequestAttributeListener --监听request对象中属性的改变
6.1 attributeAdded(ServletRequestAttributeEvent srae) -- 添加属性时执行
6.2 attributeReplaced(ServletRequestAttributeEvent srae) -- 修改属性时执行
6.3 attributeRemoved(ServletRequestAttributeEvent srae) -- 删除属性时执行
监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。
在springboot中,创建一个监听器是很方便的,只需要根据需求实现上面的几种监听器的其中之一。然后在你创建的监听器加上注解@WebListener ;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;
/**
* @Author: Galen
* @Date: 2019/6/25-15:11
* @Description:登陆监听器
**/
@WebListener
public class LoginListener implements ServletRequestListener {
@Override
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
System.out.println("---------------------------->请求创建");
}
@Override
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
System.out.println("---------------------------->请求销毁");
}
}
最后,在启动类加上注解@ServletComponentScan(basePackages = "com.apl.pgs.listener.*"),开启监听器。
basePackages =监听器的 包名+类名 。可以开启一个或多个。
这样,监听器就配置完成了,具体业务逻辑可以在监听器做处理了。
本文参考博文 https://blog.csdn.net/zhaoxichen_10/article/details/93622162
上一篇: spring boot 之监听器ApplicationListener
下一篇: css 自适应高度
推荐阅读
-
Spring Boot配置AOP打印日志的全过程
-
Spring Boot 编写Servlet、Filter、Listener、Interceptor的方法
-
spring boot Logging的配置以及使用详解
-
Spring Boot Security配置教程
-
Spring Boot 配置MySQL数据库重连的操作方法
-
Spring Boot配置过滤器的两种方式
-
Spring boot通过HttpSessionListener监听器统计在线人数的实现代码
-
spring boot application properties配置实例代码详解
-
详解spring boot starter redis配置文件
-
spring boot启动时加载外部配置文件的方法