最近在研究Spring 感觉不错。。。。。
ApplicationContext中的事件处理是通过ApplicationEvent
类和ApplicationListener
接口来提供的。如果在上下文中部署一个实现了ApplicationListener
接口的bean,那么每当一个ApplicationEvent
发布到ApplicationContext
时,这个bean就得到通知。
以下是一个关于Spring事件的代码。
package com.xinnuo.spring.event;
/**
* email 对象
* @author 周行
*
*/
public class Email {
private String name;
private String email;
private String subject;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
}
package com.xinnuo.spring.event;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
/**
* 事件监听器
*
* @author 周行
*
*/
public class BlackListNotifier implements ApplicationListener {
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof BlackListEvent) {
Email email = (Email)event.getSource();
System.out.println("name:"+email.getName());
System.out.println("email:"+email.getEmail());
System.out.println("subject:"+email.getSubject());
}
}
}
package com.xinnuo.spring.event;
import org.springframework.context.ApplicationEvent;
/**
* 事件
*
* @author 周行
*
*/
public class BlackListEvent extends ApplicationEvent{
private static final long serialVersionUID = 5866734089078382009L;
public BlackListEvent(Object source) {
super(source);
}
}
package com.xinnuo.spring.event;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
/**
* @author 周行
*
*/
public class EmailBean implements ApplicationContextAware {
private List blackList;
private ApplicationContext ctx;
private Email email;
public void setEmail(Email email) {
this.email = email;
}
public void setBlackList(List blackList) {
this.blackList = blackList;
}
public void setApplicationContext(ApplicationContext ctx) {
this.ctx = ctx;
}
public void sendEmail(String address) {
if (blackList.contains(address)) {
BlackListEvent evt = new BlackListEvent(email);
//发布事件
ctx.publishEvent(evt);
return;
}
}
}
package com.xinnuo.spring.event;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/**
* Spring 事件测试
* @author 周行
*
*/
public class Demo {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");
EmailBean EmailBean = (EmailBean)context.getBean("emailer");
EmailBean.sendEmail(black@list.org);
}
}
applicationContext.xml
<beans>
<bean id="emailer" class="com.xinnuo.spring.event.EmailBean" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default">
<property name="blackList">
<list>
<value>black@list.org</value>
<value>white@list.org</value>
<value>john@doe.org</value>
</list>
</property>
<property name="email">
<ref bean="email" />
</property>
</bean>
<bean id="blackListListener" class="com.xinnuo.spring.event.BlackListNotifier"></bean>
<bean id="email" class="com.xinnuo.spring.event.Email" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default">
<property name="name">
<value>zhouxing</value>
</property>
<property name="email">
<value>zx_zhouxing@sina.com</value>
</property>
<property name="subject">
<value>你好,欢迎光临!</value>
</property>
</bean>
</beans>
分享到:
相关推荐
在本文中,我们将深入探讨Spring事件驱动模型,理解其工作原理,并通过源码分析来深化认识。 首先,Spring事件驱动模型是基于观察者模式实现的,即发布者(Publisher)发布事件,订阅者(Subscriber)监听并处理...
技术: 1. spring事件驱动(ApplicationEventPublisher) 2. 策略模式处理事件 目的: 1. 通过event,代码逻辑异步处理 2. 通过策略模式,构建具体监听实现 3. 解耦 4. 容错(降低代码块错误风险)
Spring事件处理基于发布/订阅模式,其中事件是消息的载体,而事件监听器则是对这些消息感兴趣的订阅者。在这个场景中,我们将探讨Spring MVC实例与Spring事件处理的结合。 首先,让我们了解Spring MVC。Spring MVC...
下面我们将深入探讨Spring事件处理的相关知识点。 首先,Spring事件是通过`ApplicationEvent`类来表示的。这是一个抽象基类,用于定义所有自定义事件。例如,如果你有一个用户注册的服务,你可能会创建一个`...
使用Spring事件机制实现异步的方法 Spring框架提供了一种事件机制,允许开发者将代码解耦合,实现松散耦合的设计理念。这里将详细介绍如何使用Spring事件机制实现异步的方法。 事件机制的实现主要包括三个部分:...
Spring事件主要涉及两个核心概念:事件发布(Event Publishing)和事件监听(Event Listening)。在这个"JAVA-spring学习资源之spring事件"中,我们将深入探讨这两个方面,并通过具体的示例来理解它们的工作原理。 ...
本篇文章将详细介绍Spring事件监听的三种方式:基于接口的监听器、基于类的监听器以及基于注解的监听器。 ### 1. 基于接口的监听器(ApplicationListener) **接口定义:** Spring提供了`ApplicationListener`接口...
Spring事件监听机制是Spring框架中的一个重要特性,它基于经典的观察者模式,允许应用程序组件之间进行松耦合的通信。在Spring中,事件监听机制由三部分组成:事件(ApplicationEvent)、事件监听器(Application...
SpringBoot整合RabbitMQ之Spring事件驱动模型-系统源码数据库流程图 SpringBoot整合RabbitMQ实战视频教程:https://edu.csdn.net/course/detail/9314 (感兴趣也可以加QQ联系:1974544863)
接下来,我们将深入探讨Spring事件管理的核心概念和实现方式。 首先,Spring事件是基于Java的观察者模式(Observer Pattern)实现的,它定义了主题(Subject)和观察者(Observer)之间的关系,当主题的状态发生...
下面我们将详细探讨Spring事件监听机制的相关知识点。 1. **什么是Spring事件** Spring事件(ApplicationEvent)是Spring框架内建的一种轻量级消息传递机制。它基于Java的观察者模式,其中事件是被观察的对象,而...
本章将深入探讨Spring事件(Events)的相关知识点。 首先,Java事件/监听器编程模型是基于观察者模式的,该模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被...
在Spring事件机制中,`ApplicationContext`扮演了事件总线的角色,它负责维护所有已注册的监听器,并在事件发布时分发事件给这些监听器。这种设计模式使得Spring应用的组件间通信更加灵活,同时也降低了组件之间的...
在Spring框架中,`ApplicationContext`不仅是一个容器,用于管理Bean的生命周期和依赖注入,它还提供了事件发布和监听的功能。这个特性使得Spring应用能够实现组件间的异步通信,类似于消息队列(MQ)的工作模式。...
本篇文章将深入探讨Spring的配置和事件注入机制,帮助开发者更好地理解和利用这些特性。 首先,让我们关注Spring的配置。Spring的配置主要有两种方式:XML配置和Java配置。在早期的Spring版本中,XML配置是最常用的...
Spring Boot+Spring Cloud 试题解析 Spring Boot 是一个基于 Java 的框架,...这些题目涵盖了 Spring Boot 和 Spring Cloud 的基础知识,包括配置文件的读取、日志框架的选择、热部署方式、事件机制、断路器的作用等。
Spring 事件 Application Event 原理详解 Spring 事件 Application Event 是 Spring 框架中的一种消息通信机制,用于实现 Bean 之间的消息传递。该机制基于观察者模式,允许一个 Bean 处理完一个任务之后,通知...
Spring的事件监听机制示例详解 事件监听机制是Spring Framework中的一种机制,它允许应用程序在特定的事件发生时执行...Spring事件机制是一种非常有用的机制,它能够帮助开发者实现解耦、提高系统的灵活性和扩展性。
首先,Spring事件是基于Java的`java.util.EventObject`类,它表示一个发生了的事件。Spring扩展了这个概念,创建了`org.springframework.context.ApplicationEvent`,它是所有Spring事件的基类。当你有一个特定业务...
以下将详细介绍Spring事件处理的核心概念、工作流程以及如何在实践中应用。 首先,Spring通过`ApplicationContextAware`接口提供了一种方式,使得Bean能够获取到ApplicationContext的引用。当一个Bean实现了这个...