spring中的事件驱动模型也叫作发布订阅模式,是观察者模式的一个典型的应用。
事件机制的实现需要三个部分,事件源,事件,事件监听器。
1.ApplicationEvent
2.ApplicationListener
3.ApplicationContext
ApplicationEvent就相当于事件,ApplicationListener相当于事件监听器,这里的事件源说的就是applicaitonContext.
ApplicationContext是spring中的全局容器,翻译过来是"应用上下文"的意思,它用来负责读取bean的配置文档,管理bean的加载,维护bean之间的依赖关系,可以说是负责bean的整个生命周期,再通俗一点就是我们平时所说的IOC容器.
4.ApplicationEventMulticaster
属于事件广播器,它的作用是把Applicationcontext发布的Event广播给所有的监听器.
在AbstractApplicationcontext中有一个applicationEventMulticaster的成员变量,提供了监听器Listener的注册方法.
参考:https://www.cnblogs.com/fingerboy/p/6393644.html
代码示例
/**
* 被观察者
*
* @author User
*
*/
public class MyObservable extends Observable{
private static final class MyObservableHolder{
private static final MyObservable OBSERVABLE= new MyObservable();
}
/**
* 单例模式
* @return
*/
public static MyObservable getInstance() {
return MyObservableHolder.OBSERVABLE;
}
public void customMethod(String param) {
setChanged();
notifyObservers(param);
}
}
@Component
@Lazy(false)
public class MyObserver implements Observer{
public MyObserver() {
MyObservable.getInstance().addObserver(this);
}
@Override
public void update(Observable o,Object arg) {
//do your work
System.out.println("o" + "arg");
}
}
//调用入口
MyObservable.getInstance().customMethod("param");