Spring容器事件
2018-02-13 22:48
218 查看
事件体系有三个重要的概念
事件源:事件产生者
事件监听注册表:一个地方保存监听器
事件广播器:把消息发布给监听器
1. ApplicationContextEvent:容器事件,有四个子类(启动、刷新、停止、关闭)
2. RequestHandleEvent:web事件
例子
事件源,一个事件,比如发送短信事件
事件监听器 监听发送短信的事件
广播器,发布消息
事件源:事件产生者
事件监听注册表:一个地方保存监听器
事件广播器:把消息发布给监听器
事件类
以下是已经有的事件,用户可以自定义事件1. ApplicationContextEvent:容器事件,有四个子类(启动、刷新、停止、关闭)
2. RequestHandleEvent:web事件
监听器接口
ApplicationListener事件广播
ApplicationEventMulticaster,默认使用SimpleApplicationEventMulticaster具体实现
AbstractApplicationContext拥有一个applicationEventMulticaster成员变量,提供了注册表,refresh()中通过3步进行事件处理//初始化事件广播,用户只要定义一个实现了ApplicationEventMulticaster接口的类即可,Spring通过反射找到并注册成容器事件广播器, //默认使用SimpleApplicationEventMulticaster initApplicationEventMulticaster() //注册事件监听器 反射找到所有实现了ApplicationListener接口的Bean,并注册成监听器 //实际就是添加到事件广播器所提供的事件监听器注册表中 registerListeners() //调用事件发布接口向容器所有监听器发布通知 finishRefresh()
例子
事件源,一个事件,比如发送短信事件
public class MessageSendEvent extends ApplicationContextEvent { public MessageSendEvent(ApplicationContext source) { super(source); } }
事件监听器 监听发送短信的事件
public class MessageSendListener implements ApplicationListener<MessageSendEvent>{ public void onApplicationEvent(MessageSendEvent event) { MessageSendEvent mse = (MessageSendEvent) event; System.out.println("发送短信"); } }
广播器,发布消息
public class MailSender implements ApplicationContextAware { private ApplicationContext ctx ; public void setApplicationContext(ApplicationContext ctx) throws BeansException { this.ctx = ctx; } public void sendMail(String to){ MessageSendEvent mse = new MessageSendEvent(ctx); ctx.publishEvent(mse); } }
相关文章推荐
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
- Spring进阶之路(2)-ApplicationContext容器以及事件机制
- spring容器加载完后事件处理(利用ContextRefreshedEvent事件)
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
- spring容器事件(启动,关闭,刷新...)
- spring容器加载完毕干一件事情(利用ContextRefreshedEvent事件)
- spring容器事件
- spring容器事件
- Spring容器事件
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)转
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
- spring容器加载完毕干一件事情(利用ContextRefreshedEvent事件)
- Spring容器加载完毕干一件事情(利用ContextRefreshedEvent事件)
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
- spring 第1天 IOC,DI,国际化,容器事件
- spring容器事件