什么是观察者模式?
观察者根据主题类的内部状态变化来改变自身状态,简单来说就是观察者订阅了主题类,当主题类发布一些消息,观察者就会收到消息,然后做出反应。
Spring的观察者模式
Spring用了监听器(观察者)来完成观察者模式,有两种方式:
-
通过实现ApplicationListener,覆写onApplicationEvent()方法
-
或者在方法使用注解@EventListener(ApplicationEvent.class)来完成事件监听
ApplicationContext底层用SimpleApplicationEventMulticaster发布事件(主题类内部状态变化)的时候,会同步通知这些监听器(如果设置了线程池则异步发送),监听器如果发现自己感兴趣的消息,就会进行相应的处理。