spring 监听器 Listener

简介: 简介Spring的事件为Bean和Bean之间的消息传递提供支持。当一个对象处理完某种任务后,通知另外的对象进行某些处理,常用的场景有进行某些操作后发送通知,消息、邮件等情况。 Spring提供一些主要的事件监听ServletContextListener -- 监听servletConte...

简介

Spring的事件为Bean和Bean之间的消息传递提供支持。当一个对象处理完某种任务后,通知另外的对象进行某些处理,常用的场景有进行某些操作后发送通知,消息、邮件等情况。 

Spring提供一些主要的事件监听

ServletContextListener -- 监听servletContext对象的创建以及销毁

    contextInitialized(ServletContextEvent arg0)   -- 创建时执行
    contextDestroyed(ServletContextEvent arg0)  -- 销毁时执行

HttpSessionListener  -- 监听session对象的创建以及销毁

    sessionCreated(HttpSessionEvent se)   -- 创建时执行
    sessionDestroyed(HttpSessionEvent se) -- 销毁时执行

ServletRequestListener -- 监听request对象的创建以及销毁

    requestInitialized(ServletRequestEvent sre) -- 创建时执行
    requestDestroyed(ServletRequestEvent sre) -- 销毁时执行

ServletContextAttributeListener  -- 监听servletContext对象中属性的改变

    attributeAdded(ServletContextAttributeEvent event) -- 添加属性时执行
    attributeReplaced(ServletContextAttributeEvent event) -- 修改属性时执行
    attributeRemoved(ServletContextAttributeEvent event) -- 删除属性时执行

HttpSessionAttributeListener  --监听session对象中属性的改变

    attributeAdded(HttpSessionBindingEvent event) -- 添加属性时执行
    attributeReplaced(HttpSessionBindingEvent event) -- 修改属性时执行
    attributeRemoved(HttpSessionBindingEvent event) -- 删除属性时执行

ServletRequestAttributeListener  --监听request对象中属性的改变

    attributeAdded(ServletRequestAttributeEvent srae) -- 添加属性时执行
    attributeReplaced(ServletRequestAttributeEvent srae) -- 修改属性时执行
    attributeRemoved(ServletRequestAttributeEvent srae) -- 删除属性时执行

写一个session监听器用例

@Configuration
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {

@Override
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
    System.out.println("【监听器:Session】创建");
}

@Override
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
    System.out.println("【监听器:Session】 销毁");
}
}

自定义事件监听 

springboot中事件和事件监听器的父类分别是:ApplicationEvent和ApplicationListener。

自定义事件监听用例 

监听部分

@Component
public class MsgListener implements ApplicationListener<SendMsgEvent> {
@Override
public void onApplicationEvent(SendMsgEvent sendMsgEvent) {
    sendMsgEvent.output();
    System.out.println(sendMsgEvent.receiver + " MsgListener msg : " + sendMsgEvent.content );
}
}

事件部分

public class SendMsgEvent extends ApplicationEvent {

private static final long serialVersionID = 1L;

// 收件人
public String receiver;

// 收件内容
public String content;

public SendMsgEvent(Object source) {
    super(source);
}

public SendMsgEvent(Object source, String receiver, String content) {
    super(source);
    this.receiver = receiver;
    this.content = content;
}

public void output(){
    System.out.println("I had been sand a msg to " + this.receiver);
}
}

测试用例

@Autowired
ApplicationContext applicationContext;

@GetMapping("/createSession")
public void createSession(HttpServletRequest request) {
    HttpSession sessoin=request.getSession();//这就是session的创建
    sessoin.setAttribute("x","x");//给session添加属性属性
    applicationContext.publishEvent(new SendMsgEvent(source, receiver, content));
}

测试结果

QQ_20190121145421

目录
相关文章
|
10天前
|
Java Spring
flowable 监听器无法获取spring bean ,自动注入bean为null,解决方案
flowable 监听器无法获取spring bean ,自动注入bean为null,解决方案
|
10天前
spring-state-machine监听器
spring-state-machine监听器
16 0
|
10月前
|
设计模式 缓存 Java
Spring监听器用法与原理详解(带ApplicationListener模型图)(1)
Spring监听器用法与原理详解(带ApplicationListener模型图)
367 0
|
10天前
spring-state-machine监听器
spring-state-machine监听器
24 0
|
8月前
|
缓存 监控 Java
【Spring Boot系列】- Spring Boot侦听器Listener
【Spring Boot系列】- Spring Boot侦听器Listener
76 0
|
10月前
|
设计模式 Java Spring
Spring 观察者模式详解以及自定义监听器扩展实现(下)
Spring 观察者模式详解以及自定义监听器扩展实现(下)
89 0
|
10月前
|
存储 Java Spring
Spring 观察者模式详解以及自定义监听器扩展实现(上)
Spring 观察者模式详解以及自定义监听器扩展实现
108 0
|
10月前
|
设计模式 缓存 Java
Spring监听器用法与原理详解(带ApplicationListener模型图)(2)
Spring监听器用法与原理详解(带ApplicationListener模型图)
159 0
|
10月前
|
设计模式 Java 数据库连接
Spring高手之路7——事件机制与监听器的全面探索
本篇文章为你详细解析了Spring的事件机制,包括了Spring事件模型的四个核心概念:事件源、事件、广播器、监听器。我们通过深入浅出的实例解析了如何自定义事件和监听器,以及如何在实际项目中应用。最后,我们还详细探讨了监听器和Bean的生命周期的关系。无论你是Spring初学者,还是有一定经验的开发者,阅读本文都将帮助你更深入地理解Spring的事件机制和监听器,掌握Spring框架的核心技术。
390 0
Spring高手之路7——事件机制与监听器的全面探索
|
11月前
|
Java Spring
Spring Boot 监听器、拦截器以及过滤器的作用、差异?
Spring Boot 监听器、拦截器以及过滤器的作用、差异?
180 0