spring中的观察者模式
2021-02-06 16:15
标签:事件对象 process str let 实例化 刷新 red 选择 rabl 1. 事件(ApplicationEvent) ApplicationEvent 是所有事件对象的父类。ApplicationEvent 继承自 jdk 的 EventObject, 所有的事件都需要继承 ApplicationEvent, 并且通过 source 得到事件源。 下列描述了Spring提供的内置事件: 2. 事件监听(ApplicationListener) ApplicationListener 事件监听器,也就是观察者。继承自 jdk 的 EventListener,该类中只有一个方法 onApplicationEvent。当监听的事件发生后该方法会被执行。 3. 事件发布(ApplicationContext) ApplicationContext 是 Spring 中的核心容器,在事件监听中 ApplicationContext 可以作为事件的发布者,也就是事件源。因为 ApplicationContext 继承自 ApplicationEventPublisher。在 ApplicationEventPublisher 中定义了事件发布的方法 — publishEvent(Object event) 4. 事件管理(ApplicationEventMulticaster) ApplicationEventMulticaster 用于事件监听器的注册和事件的广播。监听器的注册就是通过它来实现的,它的作用是把 Applicationcontext 发布的 Event 广播给它的监听器列表。 实例: 1、事件event,需要继承 ApplicationEvent 2、事件发布-直接使用 spring的 ApplicationContext 或者 ApplicationEventPublisher即可 3、监听事件--方法上使用 @EventListener注解即可,或者自定义类继承自 jdk 的 EventListener; spring中的观察者模式 标签:事件对象 process str let 实例化 刷新 red 选择 rabl 原文地址:https://www.cnblogs.com/wl20200316/p/12582978.html一、Spring 中观察者模式的四个角色
二、Spring中实现观察者模式
public class ProcessInfoEvent extends ApplicationEvent {
private ProcessInfo processInfo;
public ProcessInfoEvent(Object source) {
super(source);
ProcessInfo source1 = (ProcessInfo) source;
this.processInfo = source1;
}
public ProcessInfo getProcessInfo() {
return processInfo;
}
public void setProcessInfo(ProcessInfo processInfo) {
this.processInfo = processInfo;
}
}
@Autowired
private ApplicationEventPublisher publisher;
@Override
public RemoteResult
//正常业务流程
。。。。。。。。。。。。。。。。
}
@EventListener
@Async //异步注解;如果不使用该注解,2、3 中的业务流程将 顺序执行;3中的方法出现异常,将影响2 中的正常业务的执行;
//如果使用异步注解,2、3解耦和;3中 eventListers中的方法执行将不会影响2中正常业务的执行
public void eventListener(ProcessInfoEvent event){
RemoteResult