源于:https://blog.csdn.net/it_man/article/details/8440737
spring提供事件传播机制。
ApplicationContext基于Observer(观察者)模式(Java.util有实现)。通过使用Application.publishEvent方法,可以将事件通知给所有的ApplicationListener.
作用:借助事件机制,可以完成当系统出现异常,可以在监视端上报警,并发短信通知管理员。
spring事件对象
ApplicationEvent(定义事件),ApplicationListener(事件监听器),ApplicationEventPublisher(spring提供的事件发布者)
// 定义某一类事件
public class TestEvent extends ApplicationEvent {
private static final long serialVersionUID = 1L;
public TestEvent(Object source) {
super(source);
}
}
// 功能将日志文件,进行统一处理
public class Application implements ApplicationListener<TestEvent>{
@Override
public void onApplicationEvent(TestEvent event) {
// todo
// 统一处理事件 可以使用instanceof进行对象比对
}
}
// 事件触发的地方
public class controller {
@Autowired
public ApplicationEventPublisher applicationEventPublisher;
@Autowired
public ApplicationContext applicationContext;
public test() {
// 定义某个类型的事件,然后发布事件,通过时间监听(listener)进行接收和处理。
applicationEventPublisher.publishEvent(new TestEvent(...));
// 可以用springboot的上下文
applicationContext.publishEvent(new TestEvent(...));
}
}
项目中解析图:
二、观察者模式
简单的说就是:一个对象发生变化,那么依赖他的其他对象,都会接到通知。 对象之间是一对多的关系。