`
zhouxing
  • 浏览: 206608 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring 事件

阅读更多

      最近在研究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事件驱动模型,理解其工作原理,并通过源码分析来深化认识。 首先,Spring事件驱动模型是基于观察者模式实现的,即发布者(Publisher)发布事件,订阅者(Subscriber)监听并处理...

    spring事件驱动 + 策略模式应用

    技术: 1. spring事件驱动(ApplicationEventPublisher) 2. 策略模式处理事件 目的: 1. 通过event,代码逻辑异步处理 2. 通过策略模式,构建具体监听实现 3. 解耦 4. 容错(降低代码块错误风险)

    spring 事件处理

    Spring事件处理基于发布/订阅模式,其中事件是消息的载体,而事件监听器则是对这些消息感兴趣的订阅者。在这个场景中,我们将探讨Spring MVC实例与Spring事件处理的结合。 首先,让我们了解Spring MVC。Spring MVC...

    spring事件的例子

    下面我们将深入探讨Spring事件处理的相关知识点。 首先,Spring事件是通过`ApplicationEvent`类来表示的。这是一个抽象基类,用于定义所有自定义事件。例如,如果你有一个用户注册的服务,你可能会创建一个`...

    使用Spring事件机制实现异步的方法

    使用Spring事件机制实现异步的方法 Spring框架提供了一种事件机制,允许开发者将代码解耦合,实现松散耦合的设计理念。这里将详细介绍如何使用Spring事件机制实现异步的方法。 事件机制的实现主要包括三个部分:...

    JAVA-spring学习资源之spring事件

    Spring事件主要涉及两个核心概念:事件发布(Event Publishing)和事件监听(Event Listening)。在这个"JAVA-spring学习资源之spring事件"中,我们将深入探讨这两个方面,并通过具体的示例来理解它们的工作原理。 ...

    spring 事件监听 3种方式

    本篇文章将详细介绍Spring事件监听的三种方式:基于接口的监听器、基于类的监听器以及基于注解的监听器。 ### 1. 基于接口的监听器(ApplicationListener) **接口定义:** Spring提供了`ApplicationListener`接口...

    深入探索Spring事件监听机制:技术与应用

    Spring事件监听机制是Spring框架中的一个重要特性,它基于经典的观察者模式,允许应用程序组件之间进行松耦合的通信。在Spring中,事件监听机制由三部分组成:事件(ApplicationEvent)、事件监听器(Application...

    SpringBoot整合RabbitMQ之Spring事件驱动模型-系统源码数据库流程图

    SpringBoot整合RabbitMQ之Spring事件驱动模型-系统源码数据库流程图 SpringBoot整合RabbitMQ实战视频教程:https://edu.csdn.net/course/detail/9314 (感兴趣也可以加QQ联系:1974544863)

    Spring事件管理

    接下来,我们将深入探讨Spring事件管理的核心概念和实现方式。 首先,Spring事件是基于Java的观察者模式(Observer Pattern)实现的,它定义了主题(Subject)和观察者(Observer)之间的关系,当主题的状态发生...

    event.rar-Spring事件监听机制

    下面我们将详细探讨Spring事件监听机制的相关知识点。 1. **什么是Spring事件** Spring事件(ApplicationEvent)是Spring框架内建的一种轻量级消息传递机制。它基于Java的观察者模式,其中事件是被观察的对象,而...

    第十七章 Spring 事件(Events)1

    本章将深入探讨Spring事件(Events)的相关知识点。 首先,Java事件/监听器编程模型是基于观察者模式的,该模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被...

    spring事件机制

    在Spring事件机制中,`ApplicationContext`扮演了事件总线的角色,它负责维护所有已注册的监听器,并在事件发布时分发事件给这些监听器。这种设计模式使得Spring应用的组件间通信更加灵活,同时也降低了组件之间的...

    spring的Applicationcontext对事件的监听,实现类似MQ的效果

    在Spring框架中,`ApplicationContext`不仅是一个容器,用于管理Bean的生命周期和依赖注入,它还提供了事件发布和监听的功能。这个特性使得Spring应用能够实现组件间的异步通信,类似于消息队列(MQ)的工作模式。...

    Spring的配置以及事件注入

    本篇文章将深入探讨Spring的配置和事件注入机制,帮助开发者更好地理解和利用这些特性。 首先,让我们关注Spring的配置。Spring的配置主要有两种方式:XML配置和Java配置。在早期的Spring版本中,XML配置是最常用的...

    spring笔试题选择和简答题和springboot+cloud选择题和简答题

    Spring Boot+Spring Cloud 试题解析 Spring Boot 是一个基于 Java 的框架,...这些题目涵盖了 Spring Boot 和 Spring Cloud 的基础知识,包括配置文件的读取、日志框架的选择、热部署方式、事件机制、断路器的作用等。

    Spring事件Application Event原理详解

    Spring 事件 Application Event 原理详解 Spring 事件 Application Event 是 Spring 框架中的一种消息通信机制,用于实现 Bean 之间的消息传递。该机制基于观察者模式,允许一个 Bean 处理完一个任务之后,通知...

    Spring的事件监听机制示例详解

    Spring的事件监听机制示例详解 事件监听机制是Spring Framework中的一种机制,它允许应用程序在特定的事件发生时执行...Spring事件机制是一种非常有用的机制,它能够帮助开发者实现解耦、提高系统的灵活性和扩展性。

    spring中监听事件

    首先,Spring事件是基于Java的`java.util.EventObject`类,它表示一个发生了的事件。Spring扩展了这个概念,创建了`org.springframework.context.ApplicationEvent`,它是所有Spring事件的基类。当你有一个特定业务...

    J2EE企业级项目开发-1期 08 Spring中事件处理的小技巧.doc

    以下将详细介绍Spring事件处理的核心概念、工作流程以及如何在实践中应用。 首先,Spring通过`ApplicationContextAware`接口提供了一种方式,使得Bean能够获取到ApplicationContext的引用。当一个Bean实现了这个...

Global site tag (gtag.js) - Google Analytics