LZ第一次在工作中接觸Spring事件機制是項目中的定時任務,當Spring容器初始化完成時,把配置在數據庫中的定時任務數據全部加載.此時只用定義一個類實現ApplicationListener<ContextRefreshedEvent>接口,並把該類交給Spring來管理,並在覆寫的方法中實現自己的業務即可,因爲ContextRefreshedEvent就是Spring的啓動事件,Spring啓動完成就會觸發該事件.
我們工作中也有許多時候需要自己定義事件與監聽器,例如,在金融相關的項目中,當一筆借款或還款被審覈成功後可能會推送消息,發站內信,發短信,記錄流水等等,如果我們都通過注入對象調用對象對應的方法來處理,那麼代碼耦合度高.此時我們可以使用Spring的事件機制來處理.
接口簡介:
ApplicationEvent : 事件,代表一個事情發生了,一個事件對象需要關聯(事件源,事件關聯的對象);
ApplicationEventPublisher : 發佈消息對象,負責發佈消息,調度消息的監聽器;
ApplicationListener : 負責處理某一類消息;
流程簡介:
首先創建一個監聽器,並註冊到Spring容器;
其次,在某一個事件發生的時候,創建這個事件對應的消息對象(ApplicationEvent);
最後,調用發佈消息的方法去發佈和調度監聽器處理這個消息.
下面是個簡單的實踐: