1. 程式人生 > >如何自定義事件(Spring事件機制淺談)

如何自定義事件(Spring事件機制淺談)

       LZ第一次在工作中接觸Spring事件機制是專案中的定時任務,當Spring容器初始化完成時,把配置在資料庫中的定時任務資料全部載入.此時只用定義一個類實現ApplicationListener<ContextRefreshedEvent>介面,並把該類交給Spring來管理,並在覆寫的方法中實現自己的業務即可,因為ContextRefreshedEvent就是Spring的啟動事件,Spring啟動完成就會觸發該事件.

       我們工作中也有許多時候需要自己定義事件與監聽器,例如,在金融相關的專案中,當一筆借款或還款被稽核成功後可能會推送訊息,發站內信,發簡訊,記錄流水等等,如果我們都通過注入物件呼叫物件對應的方法來處理,那麼程式碼耦合度高.此時我們可以使用Spring的事件機制來處理.

   介面簡介:

       ApplicationEvent : 事件,代表一個事情發生了,一個事件物件需要關聯(事件源,事件關聯的物件);

       ApplicationEventPublisher : 釋出訊息物件,負責釋出訊息,排程訊息的監聽器;

       ApplicationListener : 負責處理某一類訊息;

   流程簡介:

       首先建立一個監聽器,並註冊到Spring容器;

       其次,在某一個事件發生的時候,建立這個事件對應的訊息物件(ApplicationEvent);

       最後,呼叫釋出訊息的方法去釋出和排程監聽器處理這個訊息.

   下面是個簡單的實踐: