观察者模式:spring的事件监听
Posted 我爱看明朝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了观察者模式:spring的事件监听相关的知识,希望对你有一定的参考价值。
观察者模式:spring的事件监听
之前,我在设计模式专栏里写过观察者模式,感兴趣的同学,可以去看看。
spring为我们提供了事件监听机制,可以帮助我们解耦代码。
监听机制由3部分组成:
事件: 继承ApplicationEvent类,可以自定义自己的事件消息
事件发布者: 通过ApplicationEventPublisher发布事件,分离业务,把业务传递给其他模块下游业务
事件监听者: 处理传播过来的事件
事件发布者--------事件--------->事件监听者
实现事件
/**
* @author xuelongjiang
* @description 自定义事件监听器
**/
public class MyEvent extends ApplicationEvent
// 我们自定义的事件消息
private String msg;
public MyEvent(Object source, String msg)
super(source);
this.msg = msg;
public String getMsg()
return msg;
public void setMsg(String msg)
this.msg = msg;
事件发布者
/**
* @author xuelongjiang109
* @description 事件发布器
**/
@Component
public class EventDeal
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
// 发布事件
public void publish(String msg)
MyEvent myEvent = new MyEvent(this, msg);
applicationEventPublisher.publishEvent(myEvent);
事件监听者
// 任意bean里都可以
//方法级,可以一个bean里,处理多个不同的事件,便于统一管理
@EventListener
public void dealEvent(MyEvent myEvent)
System.out.println("监听到事件:" + myEvent.getMsg());
总的来说,自定义事件比较简单。对于@EventListenerd注解spring通过cglib动态代理调用执行。
重要的是,我们要运用观察者这种设计模式,在我们的设计开发中,使我们的系统更加的可插拔、高内聚,低耦合。
以上是关于观察者模式:spring的事件监听的主要内容,如果未能解决你的问题,请参考以下文章