ApplcationEvent以及Listtener 是Spring 爲咱們提供的一個事件監聽、訂閱的實現,內部實現的原理是觀察者設計模式,設計初衷也是爲了系統業務邏輯之間的解耦,提升系統可擴展性以及可維護性。在一些與業務無關的、通用的操做方法,咱們能夠把它設計成事件監聽器,事件發佈者不須要考慮誰去監聽、監聽的具體內容是什麼,發佈者的工做只是爲了發佈事件而已。spring
在這裏只是簡單的講解如何使用ApplicationEvent以及使用Listen來完成業務邏輯的解耦,不涉及到複雜的數據交互,全部須要引入的依賴不多,項目Pom.xml配置文件以下:設計模式
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> </dependency>
首先要建立一個事件,監聽都是圍繞着事件來進行的。事件的代碼很簡單: ide
事件發佈是由ApplicationContext對象管控的,在事件發佈以前須要注入 ApplicationContext對象,而後經過 publishEvent 方法完成事件發佈。 spring-boot
如今須要使用@component註解來聲明該監聽須要被Spring 注入管理,在用戶註冊監聽實現方法上添加 @EventListener 註解,當有userRegisterEvent事件發佈時候,監聽程序會自動調用,而後根據方法內配置的事件完成監聽設計