Spring中ApplicationContext中事件机制比较简单,容器事件:ApplicationEvent ,监听器:ApplicationListener,当事件发生时,触发监听器中方法。
看一个实例:
package applicationContextEvent;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
public class MyListener implements ApplicationListener {
public void onApplicationEvent(ApplicationEvent arg0) {
if(arg0 instanceof ContextRefreshedEvent)//ContextRefreshedEvent表示初始化容器或刷新容器事件
{
System.out.println("-------------");
}
}
}
然后在xml中配置事件监听器:
<bean id="myListener" class="applicationContextEvent.MyListener">
</bean>
当我们调用new ClassPathapplicationContext(....)时,就会触发该事件
以上的ContextRefershedEvent是自动触发,如果我们想定义一个自己的事件(不是applicationContext内置的),我们就需要手动的通过ApplicationContext的pulishEvent(事件源) 来触发事件