spring 事件处理
来源:互联网 发布:windows 国产平板 编辑:程序博客网 时间:2024/06/05 17:17
Java提供了事件机制,在使用spring的时候,我们可以把普通的java事件操作定义为bean集成到bean容器中,但还有一种更方便的方式,即使用spring已集成的事件支持。
在使用Spring的事件支持时,我们需要关注以下几个对象:
1. ApplicationEvent:继承自EventObject,同时是spring的application中事件的父类,需要被自定义的事件继承。
2. ApplicationListener:继承自EventListener,spring的application中的监听器必须实现的接口,需要被自定义的监听器实现其onApplicationEvent方法
3.Spring中提供一些Aware相关的接口,BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,其中最常用到的是ApplicationContextAware。实现ApplicationContextAware的Bean,在Bean被初始后,将会被注入ApplicationContext的实例。ApplicationContextAware提供了publishEvent()方法,实现Observer(观察者)设计模式的事件传播机,提供了针对Bean的事件传播功能。通过Application.publishEvent方法,我们可以将事件通知系统内所有的ApplicationListener。
1.继承ApplicationEvent
public class AnimalSpeakEvent extends ApplicationEvent{private static final long serialVersionUID = 1L;private String animalName;public String getAnimalName() {return animalName;}public AnimalSpeakEvent(Object source) {super(source);} public AnimalSpeakEvent(Object source,String animalName) {super(source);this.animalName = animalName;}}
2.定义监听类,实现ApplicationListener接口
@Servicepublic class AnimalEventListener implements ApplicationListener {public void onApplicationEvent(ApplicationEvent event) {if (event instanceof AnimalSpeakEvent) { AnimalSpeakEvent a = (AnimalSpeakEvent) event; System.out.println("事件监听器" + this.getClass().getSimpleName()+":有一个动物在讲话!它的名字是:"+ a.getAnimalName());}}}
3. 发布事件,Bean类调用容器的方法发布事件。
a、继承后处理Bean接口ApplicationContextAware,实现setApplicationContext。
b、调用传入的ApplicationContext的publishEvent方法发布事件。
@Service("animal")public class Animal implements ApplicationContextAware {private ApplicationContext ac;private String name;private int age;public void setApplicationContext(ApplicationContext arg0)throws BeansException {this.ac=arg0;}public String speak(){ac.publishEvent(new AnimalSpeakEvent(this,this.name)); return " 我的名字是;"+this.name+",我的年龄是:"+this.age;}public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}}
4.配置
<bean id="animal" class="com.mvc.event.Animal"> <property name="name" value="老虎" /> <property name="age" value="5" /> </bean>
5.使用事件
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");//事件处理Animal animal=(Animal)applicationContext.getBean("animal");animal.speak();//方法一applicationContext.publishEvent(new AnimalSpeakEvent(AnimalSpeakEvent.class,"青龙"));//方法二
- spring事件处理
- spring事件处理
- spring事件处理
- spring 事件处理
- spring事件处理
- Spring的事件处理
- spring事件处理例子
- Spring入门之事件处理
- Spring学习八:Spring事件处理
- Spring中事件处理的小技巧
- Spring中事件处理的小技巧
- Spring中事件处理的小技巧
- Spring中事件处理的小技巧
- Spring中事件处理de小技巧
- Spring中事件处理de小技巧
- Spring中事件处理的小技巧
- spring 实现事件的异步处理
- [Spring] SpringBoot 集成 Reactor 事件处理框架
- linux中BUG_ON和WARN_ON解析
- 最新版ThoughtWorks工程师读书路线图(配文字)
- iOS中多线程原理与runloop介绍
- 全局变量定义
- gcc编译C++程序
- spring 事件处理
- ios not lauch处理
- cstdlib file not found的解决方案
- sqlite的一些用法
- 金融机构中的积数
- Android SDK4.2 (API17) 开发环境的搭建
- CIRCOS教程翻译 3.4——Radial Position
- jquery无刷新分页
- mysql开发规范文档