監聽器Listener:
SpringBoot 的監聽器多用於監聽Web應用中某些對象,信息的創建、銷毀、增加、修改、刪除等動作的發生,然后做出響應的處理。的那個范圍對象狀態發生變化時,服務器自動調用監聽器對象的方法,
使用場景:
- 系統統計在線用戶
- 系統加載時進行信息初始化
- 系統網站的訪問量
等.....
實現流程:
- 自定義事件,一般是繼承ApplicationEvent抽象類
- 定義事件監聽器,一般是實現ApplicationListener接口
- 啟動的時候,需要把監聽器加入到spring容器中
- 發布事件
其中配置監聽器的方法有四種:
- applicationContext.addApplicationListener(new Mylistener())
- 把監聽器加入到spring容器中管理,即類上加@Component注解
- 在application.properties文件中使用context.listenser.classes配置配置項
- 使用@EventListener注解,在方法上面加入@EventListener注解,同時該類需要納入到spring容器中管理
操作:
1、在需要被監聽的類集成ApplicationEvent類,並重寫該類的構造方法:
public class MyEvent extends ApplicationEvent{ public MyEvent(Object source,String params) { //定義成Object類 super(source); } }
2、使用剛才的四種方法的其中一種定義一個監聽器,這里使用類上加@Component注解的方法:
@Component public class Mylistener implements ApplicationListener<MyEvent>{ //<寫要監聽的對象> @Override public void onApplicationEvent(MyEvent event) { System.out.println("我開始監聽"+event.getClass()); } }
3、創建監聽對象的時候,第一個參數source如何填寫:
需要引入
@Component public class DemoPublisher { @Resource private ApplicationContext applicationContext; public void publish(String message){ applicationContext.publishEvent(new MyEvent(this,message)); } }