Spring 中的事件驱动模型
事件驱动的基本了解
事件模式也就是观察者模式,当一个对象改变的时候,所有依赖的对象都会收到一个通知。
Subject:抽象主题
Observer:具体主题
Concrete Subject:抽象观察者,在得到更新通知之后去更新自己。
Concrete Observer:一个具体观察者,去实现抽象观察者的定义
Spring事件驱动模型的组成和应用
先定义一个事件,也就是一个类继承ApplicationEvent这个是Spring下的
之后定义一个推送事件的一个消息
在定义一个监听者,在发送消息后监听者会收到消息发送,然后进行处理。
它有两实现方式
第一种是实现ApplicationListener
第二种通过添加注解实现@EventListener,这个可以添加参数也可以不添加,这个主要是看你对那个事件更感兴趣。如果有参数则有且只有一个参数。
创建一个新的类用于事件发布,它有两种方式
第一种ApplicationContext注入到工厂。
第二种就是ApplicationEventPublisher直接注入即可。
如果需要使用异步操作则还需要自己定义一个线程池进行使用。
先创建一个配置类,去使用线程池。
在里面定义线程池
之后在方法上面添加一个@Bean设置参数为eventAsyncTaskExecutor。
定义好了之后回到之前的两个方法里面去指定线程池。
常见的Spring内建事件
创建一个内部事件的一个监听。
这个是在Spring初始化刷新时触发的,也就是所有的Bean都被加载,如果需要监听就添加上@EventListener这个注解,没有添加参数是自动识别的。
这个是Spring容器关闭时会触发。
这个是在Spring运行完毕并且准备接受请求时会触发。