Spring中提供一些Aware相关的接口,BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,其中最常用到的是ApplicationContextAware。实现ApplicationContextAware的Bean,在Bean被初始后,将会被注入 ApplicationContext的实例。ApplicationContextAware提供了publishEvent()方法,实现Observer(观察者)设计模式的事件传播机,提供了针对Bean的事件传播功能。通过Application.publishEvent方法,我们可以将事件通知系统内所有的ApplicationListener。
Spring事件处理一般过程:
·定义Event类,继承org.springframework.context.ApplicationEvent.
·编写发布事件类Publisher,实现org.springframework.context.ApplicationContextAware接口.
·覆盖方法setApplicationContext(ApplicationContext applicationContext)和发布方法publish(Object obj)
·定义时间监听类EventListener,实现ApplicationListener接口,实现方法onApplicationEvent(ApplicationEvent event).
java 代码
import org.springframework.context.ApplicationEvent;
/** * 定义事件信息 * @author new * */ public class MessageEvent extends ApplicationEvent {
private String message;
public void setMessage(String message){ this.message = message; }
public String getMessage(){ return message; }
public MessageEvent(Object source, String message) { super(source); this.message = message; // TODO Auto-generated constructor stub }
private static final long serialVersionUID = 1L; } |
java 代码
import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Publisher implements ApplicationContextAware {
private ApplicationContext context;
@Override public void setApplicationContext(ApplicationContext arg0) throws BeansException { // TODO Auto-generated method stub this.context = arg0; }
public void publish(String message){ context.publishEvent(new MessageEvent(this,message)); }
public static void main(String[] args) { ApplicationContext ctx = new FileSystemXmlApplicationContext("src/applicationContext.xml"); Publisher pub = (Publisher) ctx.getBean("publisher"); pub.publish("Hello World!"); pub.publish("The quick brown fox jumped over the lazy dog"); } } |
java 代码
import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener;
public class MessageEventListener implements ApplicationListener {
@Override public void onApplicationEvent(ApplicationEvent event) { // TODO Auto-generated method stub if(event instanceof MessageEvent){ MessageEvent msEvent = (MessageEvent)event; System.out.println("Received: " + msEvent.getMessage()); } } } |
在运行期,ApplicationContext会自动在当前的所有Bean中寻找ApplicationListener接口的实现,并将其作为事件接收对象。当Application.publishEvent方法调用时,所有的ApplicationListener接口实现都会被激发,每个ApplicationListener可根据事件的类型判断是否是自己需要处理的事件,如上面的ActionListener只处理ActionEvent事件。
|
相关推荐
J2EE企业级项目开发-1期 08 Spring中事件处理的小技巧.doc 学习资料 复习资料 教学资源
附:内有弹出对话框,Action乱码处理和一些好技巧。 2008-5-28 修改: 今天修改了 applicationContext.xml,以后的事务控制就万事大吉了,里面有详细注释哦。 有什么问题可以给我留言 ^_^,大家一起进步! <!...
其对于Spring Boot的最常用的第一个小程序、JavaConfig和常见注解、启动改变、热部署、Springboot整合Thymeleaf/freemarker/JSP、异常处理、配置文件、日志、国际化等都使用案例进行了说明,并且在最后通过一个贯穿...
全面介绍Spring MVC的架构、原理、核心概念和操作,通过案例完整呈现Tomcat的实现,系统总结Spring MVC九大组件的处理以及常用的技巧和实践 在大型网站和复杂系统的开发中,Java具有天然的优势,而在Java的Web框架中...
通过案例完整呈现Tomcat的实现,系统总结Spring MVC九大组件的处理以及常用的技巧和实践 在大型网站和复杂系统的开发中,Java具有天然的优势,而在Java的Web框架中Spring MVC以其强大的功能以及简单且灵活的用法受到...
通过整合微信小程序,学生可以无需安装额外的应用,直接在微信环境中完成签到流程。 项目的主要功能包括: 1. **学生签到**: 学生可以通过扫描二维码或地理位置信息来进行签到,确保了签到的真实性和准确性。 2. *...
整个项目采用MVC架构设计,Spring负责整体业务逻辑的处理和依赖注入,Spring MVC用于处理HTTP请求和页面跳转,而MyBatis负责与数据库的交互操作。数据库设计考虑了数据的完整性和查询效率,以适应游戏助手服务的需求...
以及基于这些技术的商业化应用程序的开发技巧,在讲解过程中以目前最为流行的开发工具MyEclipse为载体,全面系统地介绍了如何在MyEclipse中开发基于Struts、Hibernate、Spring等主流框架的各种Java应用程序。...
SSM项目大学生心理健康测评管理系统小程序pf.zip是一个使用Java语言开发的Web应用,它采用了SSM(Spring Spring MVC MyBatis)框架,并结合了微信小程序前端技术。该系统旨在为高校学生提供一个心理健康评估和管理的...
SSM项目汉中茗茶微系统设计与实现修改微信小程序代码pf.zip是一个使用Java语言开发的Web应用,它采用了SSM(Spring Spring MVC MyBatis)框架,并结合了微信小程序前端技术。该系统旨在为用户提供一个便捷的在线茶叶...
MyBatis的基础支持层、核心处理层中各个模块的功能和实现细节进行了...除此之外,还分析了MyBatis插件的应用场景和实现原理,介绍了MyBatis与Spring集成开发的示例和原理,以及一些实践中的小技巧和小工具的使用方法。
微信小程序“基于H5移动网赚项目设计与实现Springboot.zip”是一个基于Spring Boot框架开发的微信小程序,专为移动端用户设计的一种网络赚钱平台。该项目结合了微信小程序的便捷性和Spring Boot的技术优势,旨在为...
通过阅读毕业论文,读者不仅可以了解本系统的开发思路与实现方法,还可以学习到Spring Boot等技术的使用技巧与最佳实践。 最后,毕设源代码已进行精心整理与注释,方便读者阅读与学习。同时,源代码具有良好的可...
基于Spring Boot框架的微信小程序戏曲文化苑旨在为用户提供便捷的戏曲文化传承和欣赏服务,通过整合后端逻辑处理和微信小程序的用户界面交互,实现以下主要功能: 戏曲资讯浏览:用户可以通过微信小程序浏览最新的...
在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...
该资源是一个关于微信小程序和SSM(Spring、SpringMVC、MyBatis)整合开发的教学资料,包含源码、部署说明、演示视频、源码介绍以及学习笔记。它旨在帮助开发者快速掌握微信小程序与后端SSM框架的整合开发技巧。 ...
微信小程序“健身管理系统及会员微信小程序的设计与实现Ssm.zip”是一款基于Spring、Spring MVC和MyBatis(SSM)框架开发的健身管理小程序,专为健身房和其会员定制。该项目结合了微信小程序的普及性和便捷性以及SSM...
微信小程序“学习自律养成小程序Ssm.zip”是一款基于Spring、Spring MVC和MyBatis(SSM)框架开发的小程序,专为帮助学生和希望提高自我管理能力的成人设计的自律学习工具。该项目结合了微信小程序的便利性与普及性...
SSM项目小程序“使命召唤游戏助手的设计与实现_pzbe0.zip”是一个基于Spring、Spring MVC和MyBatis(SSM)框架开发的微信小程序,专为使命召唤游戏玩家设计的辅助工具。该系统结合了微信小程序的用户便利性和SSM框架...