在spring应用程序中,我有BeanX,BeanY和BeanZ使用的BeanA。当BeanA在其生命周期中发生更改时,我希望BeanX,BeanY和BeanZ得到通知。有什么现成的方法可以实现这一目标吗?
答案 0 :(得分:1)
Spring通过ApplicationContext
类和ApplicationEvent
接口在ApplicationListener
中提供事件处理。
支持以下事件类型,可以将其用于事件处理。
ContextRefreshedEvent
ContextStartedEvent
ContextStoppedEvent
ContextClosedEvent
RequestHandledEvent
要监听上下文事件,bean应该实现ApplicationListener
接口,该接口只有一个方法onApplicationEvent()
答案 1 :(得分:0)
为此,您将必须实现观察者模式。
在春季,ApplicationContext
的事件机制中使用了观察者模式。部署实现ApplicationListener
接口的bean时,事件发布者每次发布事件都会收到ApplicationEvent
。
如果要创建自己的自定义事件,则事件发布者必须实现ApplicationEventPublisherAware接口。发布者可以通过调用ApplicationEvent
实例的publishEvent()
方法来发布ApplicationEventPublisher
。