`
raymond.chen
  • 浏览: 1426295 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring事件驱动模型概念及使用范例

 
阅读更多

一、概念:

 

二、使用要点:

        事件对象通过继承ApplicationEvent类来定义。

        事件监听者通过实现ApplicationListener接口来定义,并配置到spring容器中,spring容器会自动注册该事件监听器。

        事件发布者可以通过实现ApplicationEventPublisher接口来定义

 

        调用事件发布者的publishEvent方法发布了事件对象后,事件对象会传入到事件监听者的onApplicationEvent方法中。

        业务类通过实现ApplicationEventPublisherAware接口,可以自动植入事件发布者对象。

 

三、范例:

    事件发布者:

@Component
public class TellerEventPublisher implements ApplicationEventPublisher {
	private ApplicationEventPublisher publisher;

	@Override
	public void publishEvent(ApplicationEvent event) {
		publisher.publishEvent(event);
	}

	@Autowired
	public void setApplicationEventPublisher(ApplicationEventPublisher publisher) {
		this.publisher = publisher;
	}
}

 

    事件对象:

public class TellerLoginEvent extends ApplicationEvent {
	public TellerLoginEvent(Object source) {
		super(source);
	}
}

 

    事件监听器:

@Component
public class TellerLoginListener implements ApplicationListener<TellerLoginEvent> {
	@Override
	public void onApplicationEvent(TellerLoginEvent event) {
		ITellerConnection conn = (ITellerConnection) event.getSource();
		TellerLogger.log.info("uid:" + conn.getUid() + " fired login event");
		......
	}
}

 

    发布事件:

public class Test{
	@Autowired
	private TellerEventPublisher publisher;

	public void doSomething(){
		TellerLoginEvent event = new TellerLoginEvent(eventSource);
		publisher.publishEvent(event);
	}
}

 

分享到:
评论

相关推荐

    Maven+spring+spring MVC+Mybatis开发范例

    开发者首先在Eclipse这样的IDE中创建项目,然后配置Maven的POM.xml文件,声明项目所需的依赖,如Spring、Spring MVC、Mybatis和相应的数据库驱动等。接着,开发者会定义Spring的配置文件,包括bean的定义和事务管理...

    spring3.0的最新官方例子源码spring-samples

    通过查看源码,你可以学习到如何使用Spring的JdbcTemplate、HibernateTemplate或者MyBatis的SqlSessionTemplate来简化数据操作。 4. **MVC(Model-View-Controller)**:Spring MVC是Spring提供的Web开发框架,用于...

    Java Web 入门范例

    通过这些范例,初学者可以逐步了解Java Web开发的基本概念,学会如何使用Spring和Hibernate搭建实际项目,并掌握数据库连接的技巧。在实践中,你可以尝试修改代码,观察不同配置和设计决策对程序行为的影响,从而...

    Spring2.5的新特性

    这些新特性包括:注解驱动的依赖性注入(annotation-driven dependency injection),使用注解而非XML元数据来自动侦测classpath上的Spring组件,注解对生命周期方法的支持,一个新的web控制器模型将请求映射到加...

    activiti 工作流范例

    它基于模型驱动的架构,允许开发者通过图形化的方式设计、部署和管理流程。本工作流范例将帮助你深入理解和应用 Activiti 的核心功能。 首先,我们要了解 Activiti 的核心概念: 1. **流程定义(Process ...

    网络硬盘(Struts 2+Hibernate+Spring实现)

    它提供了模型驱动的编程模型,使得业务逻辑与视图和控制器分离,提高了代码的可维护性和可测试性。在本项目中,Struts 2负责处理HTTP请求,执行相应的动作,并将结果转发到合适的视图。 **Hibernate** 是一个对象...

    基于注解实现springmvc的范例

    在Spring MVC框架中,注解的使用极大地简化了配置,提高了开发效率。本文将深入探讨如何基于注解实现Spring MVC的范例,旨在为初学者提供一个清晰的入门指南。 一、Spring MVC简介 Spring MVC是Spring框架的一部分...

    MVC设计范例,主要用于了解MVC设计详情

    在这个范例中,可能包含数据库驱动配置、连接池初始化以及DAO(Data Access Object)层的实现,用于执行增删改查等数据库操作。 2. **Servlet控制器** 在MVC架构中,Servlet通常作为Controller层,负责接收HTTP...

    《轻松搞定XML》的范例源代码和学习笔记

    SAX是事件驱动模型,逐行读取,适合处理大型XML文件;而StAX是基于流的解析,允许开发者以迭代方式处理XML。 XML还广泛应用于Web服务(如SOAP消息)、配置文件(如Spring框架的bean定义)、数据交换(如RSS和Atom ...

    Java Web 整合开发 完全自学手册 源代码

    这本书旨在帮助读者全面掌握Java Web应用程序的开发技能,从基础到高级,涵盖了一系列核心概念和技术。通过源代码的学习,读者可以更直观地理解并实践这些知识点。 1. **Servlet与JSP**:Java Web开发中的两大基石...

    JAVA WEB程序开发范例宝典14-18章源代码

    在Java Web程序开发中,14到18章通常涵盖了重要的概念和技术,这些章节的源代码可以帮助我们深入理解Web应用程序的构建过程。以下是对这些章节可能涉及的关键知识点的详细解释: 1. **第14章:Servlet技术** - ...

    springmvc实例代码

    在Spring 3及更高版本中,注解成为主流,替代了XML配置。例如,`@Controller`、`@RequestMapping`、`@Service`、`@Repository`等注解用于声明类或方法的作用。这种编程方式使得代码更简洁,减少了大量的XML配置文件...

    Java消息服务(第2版)

    · 使用点对点和出版与订阅消息传递模型建立应用程序 · 使用如事务和持久订阅功能,以使应用程序可靠 · 使用消息驱动的beans在Enterprise JavaBeans(EJB)中实现消息传递 · 使用JMS时结合RESTful应用程序和...

    JAVA分页实例

    在Java编程中,分页是数据管理中的一个重要概念,特别是在处理大数据集时,它能有效提高应用程序的性能和用户体验。本实例将通过JBuilder 2006这一集成开发环境来展示如何实现Java分页功能。 首先,我们需要理解...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    86.3 驱动模型ModelDriven 8.7 实战检验 8.7.1 Struts2处理表单数据 8.7.2 使用M印类型的request、session、application 8.8 疑难解惑 8.8.1 Struts Prepare And Execute Filter过滤器 8.8.2 struts.xml文件配置出错...

    asp.net知识库

    在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    1.5. Seam 页面流:猜数字范例........................................................................................................................................ 40 1.5.1. 理解代码....................

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

Global site tag (gtag.js) - Google Analytics