spring容器的事件机制
来源:互联网 发布:百万公众网络答题2017 编辑:程序博客网 时间:2024/06/07 06:47
spring容器的事件机制是通过观察者模式实现的。
spring容器的事件机制和所以的事件机制都类似,都是由事件源、事件、事件监听器组成,只不过这里的事件源是ApplicationContext(spring容器)。
spring容器的事件机制是有ApplicationEvent类和ApplicationListener接口实现的,如果容器有一个ApplicationListener Bean,当spring容器发布ApplicationEvent Bean时(初始化),ApplicationListener Bean将自动被调用。
例子:
1、EmailEent类继承ApplicationEvent类
package myspring.com.bean;import org.springframework.context.ApplicationEvent;public class EmailEvent extends ApplicationEvent {private String address;private String text;public EmailEvent(Object source){super(source);}public EmailEvent(Object source,String address,String text){super(source);this.address = address;this.text = text;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getText() {return text;}public void setText(String text) {this.text = text;}}
2、EmailNotifier类实现ApplicationListener接口
package myspring.com.bean;import org.springframework.context.ApplicationEvent;import org.springframework.context.ApplicationListener;public class EmailNotifier implements ApplicationListener {@Overridepublic void onApplicationEvent(ApplicationEvent arg0) {if(arg0 instanceof EmailEvent){EmailEvent e = (EmailEvent)arg0;System.out.println("邮件地址:"+e.getAddress());System.out.println("邮件内容为:"+e.getText());}else{System.out.println("该事件为容器内置事件"+arg0.toString());}}}
3、在bean.xml中配置监听器,和EmailEvent对象
<pre name="code" class="java"><bean class="myspring.com.bean.EmailNotifier"></bean> <bean id = "emailEvent" class="myspring.com.bean.EmailEvent"> <constructor-arg value="hello"></constructor-arg> <constructor-arg value="nannan22222@qq.com"></constructor-arg> <constructor-arg value="spring event test"></constructor-arg> </bean>
4、测试类
package myspring.com.bean;import org.springframework.context.ApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;public class EmailEventMainMethod {public static void main(String[] args) {// TODO Auto-generated method stubApplicationContext ac = new FileSystemXmlApplicationContext("config/bean.xml");//EmailEvent e = new EmailEvent("hello","nannan@qq.com","spring event test");EmailEvent e_ = ac.getBean("emailEvent",EmailEvent.class);//ac.publishEvent(e_);//监听spring容器内置事件}}
5、输出结果
邮件地址:nannan22222@qq.com邮件内容为:spring event test
spring提供的几个其他内置事件:
1、ContextRefreashedEvent:spring容器初始化或者刷新触发该事件
2、ContextStartedEvent:ConfigurableApplicationContext(ApplicationContext的子接口)的start()方法启动spring容器时触发该事件
3、ContextClosedEvent:ConfigurableApplicationContext(ApplicationContext的子接口)的Close()方法关闭spring容器时触发该事件
4、ContextStopedEvent:ConfigurableApplicationContext(ApplicationContext的子接口)的stop()方法停止spring容器时触发该事件
5、RequstHandledEvent:使用spring作为MVC控制器时,spring处理用户请求结束后,触发该事件
- spring容器的事件机制
- ApplicationContext的事件机制&&让Bean获取Spring容器
- spring的事件机制
- spring的事件机制
- Spring进阶之路(2)-ApplicationContext容器以及事件机制
- Spring进阶之路(2)-ApplicationContext容器以及事件机制
- Spring---ApplicationContext的事件机制
- Spring的事件发布机制
- Spring容器内部的实现机制
- spring容器事件
- Spring容器事件
- Spring容器事件
- spring容器事件
- Spring的ApplicationListener及Spring容器事件使用实例
- Spring中ApplicationContext的事件机制
- Spring中ApplicationContext的事件机制 .
- Spring中ApplicationContext的事件机制
- Spring中ApplicationContext的事件机制
- Mongoose源码剖析:核心处理模块
- TCP&UDP差异对比
- 7 如何检查一个数字是不是2的乘方
- Linux如何编译安装源码包软件
- [C] printf()和scanf()的*修饰符——《C Primer Plus》
- spring容器的事件机制
- Activity的生命周期
- 8 break 和 Continue 之间的区别
- 打开Visual Studio 2010,左下角显示正在从包...加载工具箱内容,卡住5、6秒!!!
- uboot 引导Linux
- UVa_156 - Ananagrams
- 南阳737 石子合并(一)
- 进程并发执行问题
- arm-linux启动过程