Application下抽象子類ApplicationContextEvent的下面有4個已經實現好的事件
- ContextClosedEvent(容器關閉時)
- ContextRefreshedEvent(容器刷新是)
- ContextStartedEvent(容器啟動時候)
- ContextStoppedEvent(容器停止的時候)
同樣,這四個事件都繼承了ApplicationEvent,如果我們想自定義事件,也可以通過繼承ApplicationEvent來實現
使用示例:
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
*******************************
