srping event

spring event 事件监听机制,代码风格和设计模式的观察者模式思想类似,使用spring event需要用到的三个类: ApplicationListener 、ApplicationEvent、ApplicationContent  

ApplicationListener :继承了java原生的EventListener并实现了泛型传递事件,onApplicationEvent (spring事自定义的监听方法)中可以获取事件源和事件对象,可以调用相应的执行动作

ApplicationEvent:继承java原生的EventObject类,此为抽象类,定义自己的事件需要继承此类(这个类可以理解为传递事件源的桥梁),一般相关的业务逻辑在这个类中执行,为什么在这里执行,可以用javascript中的click事件思考,$("#button").click(function( alert("xxxxxxxxx"));

ApplicationContent  spring上下文,spring的总管( spring三大组成部分:content、bean、core-->导演、演员、道具),event注册事件需要用到applicationContext.publishEvent(), ApplicationContent 对象的活的可以实现ApplicationContentAware接口(此实现的原理是spring在完成ApplicationContent 的装载以后,使用接口回调方式逐个将实现了ApplicationContentAware的类注入ApplicationContent对象)

需要特别注意:ApplicationEvent最好定义自己的事件并实现ApplicationEvent ,用spring自带的ApplicationEvent事件,事件注册并发布时可能会执行多次,因为spring自己本身也会注册监听,使用了ApplicationEvent作为事件通知,用ApplicationEvent会认为框架事件

下面例子是java原生的事件和spring event的事件通知

猜你喜欢

转载自wanghanchao2012.iteye.com/blog/2383689