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事件发布时候,监听程序会自动调用,而后根据方法内配置的事件完成监听设计