Spring事件和监听器
Application下抽象子类ApplicationContextEvent的下面有4个已经实现好的事件
- ContextClosedEvent(容器关闭时)
- ContextRefreshedEvent(容器刷新是)
- ContextStartedEvent(容器启动时候)
- ContextStoppedEvent(容器停止的时候)
同样,这四个事件都继承了ApplicationEvent,如果我们想自定义事件,也可以通过继承ApplicationEvent来实现
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。使用示例:
1.新建一个MyEvent的类,继承ApplicationEvent抽象类

public class MyEvent extends ApplicationEvent { //存放构造器送入的值 private String msg; //构造器参数可以随意设置,这里为了方便调试,设置为字符串 public MyEvent(String msg) { super(msg); this.msg=msg; } //自定义一个方法,这个方法也可以随意写,这里也是测试用 public void myevent(){ System.out.println("********My event**************"); System.out.println(msg); System.out.println("*******************************"); } }

2.新建一个监听器MyListener

//注入IOC容器中 @Service("myListener") public class MyListener implements ApplicationListener<ApplicationEvent> { //调用ApplicationContext.publishEvent方法时会触发执行该方法 @Override public void onApplicationEvent(ApplicationEvent event) { //判断事件为MyEvent时候执行 if(event instanceof MyEvent){ //强制转换 MyEvent evt=(MyEvent) event; //执行自定义事件中的自定义方法 evt.myevent(); } } }

3.在测试类中发布通知publishEvent;

public class Test { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext ("classpath: applicationContext.xml"); MyEvent event = new MyEvent ("hello"); context.publishEvent(event); } }

********My event**************
hello
*******************************

更多精彩