`
m635674608
  • 浏览: 5005018 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

spring 事件(Application Event)

 
阅读更多

spring 事件为bean 与 bean之间传递消息。一个bean处理完了希望其余一个接着处理.这时我们就需要其余的一个bean监听当前bean所发送的事件.

 

spring事件使用步骤如下:

1.先自定义事件:你的事件需要继承 ApplicationEvent

2.定义事件监听器: 需要实现 ApplicationListener

3.使用容器对事件进行发布

 

以下例子是场景是注册的时候发送邮件的一个场景:

先定义事件:

复制代码
package com.foreveross.service.weixin.test.springevent;

import org.springframework.context.ApplicationEvent;

/**
 * 自定义一个事件
 * @author mingge
 *
 */
public class DemoEvent extends ApplicationEvent{
    
    private String msg;
    
    private String email;

    public DemoEvent(Object source,String msg,String email) {
        super(source);
        this.msg=msg;
        this.email=email;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
    
}
复制代码

然后定义事件监听器:

复制代码
package com.foreveross.service.weixin.test.springevent;

import org.springframework.context.ApplicationListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;


/**
 * 定义一个事件监听类
 * @author mingge
 *
 */
@Component
public class DemoEventListener implements ApplicationListener<DemoEvent>{

    //使用注解@Async支持 这样不仅可以支持通过调用,也支持异步调用,非常的灵活,
    @Async
    @Override
    public void onApplicationEvent(DemoEvent event) {
        System.out.println("注册成功,发送确认邮件为:" + event.getEmail()+",消息摘要为:"+event.getMsg());  
    }

}
复制代码

再次使用容器对事件进行发布:

复制代码
package com.foreveross.service.weixin.test.springevent;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

/**
 * 事件发布类
 * @author mingge
 *
 */
@Component
public class DemoEventPublisher {
    
    @Autowired
    private ApplicationContext applicationContext;
    
    public void pushlish(String msg,String mail){
        applicationContext.publishEvent(new DemoEvent(this, msg,mail));
    }
    
}
复制代码

最后就是测试了:

复制代码
package com.foreveross.service.weixin.test.springevent;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.foreveross.service.weixin.test.springevent")
public class EventConfig {

}
复制代码
复制代码
package com.foreveross.service.weixin.test.springevent;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * 事件测试类
 * @author mingge
 *
 */
public class EventTest {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(EventConfig.class);
        DemoEventPublisher demoEventPublisher=context.getBean(DemoEventPublisher.class);
        demoEventPublisher.pushlish("张三1","565792147@qq.com");
        demoEventPublisher.pushlish("张三2","565792147@qq.com");
        demoEventPublisher.pushlish("张三3","565792147@qq.com");
        demoEventPublisher.pushlish("张三4","565792147@qq.com");
        demoEventPublisher.pushlish("张三5","565792147@qq.com");
        context.close();
    }
}
复制代码

 

参考:http://blog.csdn.net/it_man/article/details/8440737

分享到:
评论

相关推荐

    Spring事件Application Event原理详解

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

    spring 事件处理

    Spring事件处理的核心类有三个:ApplicationEvent、ApplicationEventPublisher和ApplicationListener。ApplicationEvent是所有自定义事件的基类,我们通常会继承它来创建自己的事件类。ApplicationEventPublisher...

    详解Spring事件驱动模型

    3. 发布事件:在需要触发事件的地方,调用`ApplicationContext`的`publishEvent`方法,将事件对象传递给Spring容器。 4. 处理事件:Spring容器会自动查找所有注册的`ApplicationListener`,并将事件分发给它们。每...

    spring事件的例子

    接下来,接收和处理事件是通过实现`ApplicationListener`接口或者使用`@EventListener`注解来完成的。实现`ApplicationListener`接口需要重写`onApplicationEvent()`方法,当监听到匹配的事件时,这个方法会被调用。...

    spring event

    Spring Event机制基于`ApplicationEvent`接口,当某个组件发生事件时,它创建一个实现了`ApplicationEvent`的实例,并通过`ApplicationContext`的`publishEvent`方法发布这个事件。所有注册为事件监听器的bean会...

    spring event示例

    Spring Event是Spring框架中的一个核心特性,用于在应用程序的不同组件之间传播事件。它提供了一种解耦的方式,使得一个组件可以触发一个事件,而其他感兴趣的组件可以监听并响应这个事件,而无需这些组件之间有直接...

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

    使用@EventListener注解也可以轻松地实现事件监听器,Spring框架将自动扫描带有该注解的类,并将其添加到ApplicationContext中。在上面的代码中,使用@EventListener注解的MyEventHandler类将被Spring框架自动添加到...

    event.rar-Spring事件监听机制

    发布事件可以通过ApplicationContext的`publishEvent()`方法来实现。 3. **事件监听器接口** 要成为事件监听器,类需要实现`ApplicationListener`接口。这个接口有一个`onApplicationEvent`方法,当监听到匹配的...

    JAVA-spring学习资源之spring事件

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

    SpringEventTest工程

    `ApplicationListener`接口是Spring事件监听器的接口,实现该接口的类可以接收到特定类型的事件。当事件被发布时,Spring容器会自动调用`onApplicationEvent`方法,将事件传递给监听器。 4. **发布事件** 在...

    Spring事件管理

    在Spring中,事件被抽象为`ApplicationEvent`类,而处理事件的对象被称为监听器,它们需要实现`ApplicationListener`接口。 1. **应用事件(ApplicationEvent)** `ApplicationEvent`是Spring提供的基类,所有...

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

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

    spring 事件监听 3种方式

    Spring提供了`ApplicationListener`接口,它有一个方法`onApplicationEvent`,用于处理发生的事件。 ```java public interface ApplicationListener&lt;E extends ApplicationEvent&gt; { void onApplicationEvent(E ...

    Spring的ApplicationEvent事件和监听器的测试Demo

    总的来说,这个测试Demo帮助开发者理解并实践Spring的事件发布和监听机制,它是Spring容器内组件间通信的一种有效方式,尤其适用于那些不需要立即响应但需要在某个时刻被通知的情况。通过这个Demo,开发者可以学习...

    spring事件机制

    Spring框架的事件机制是其核心特性之一,它提供了一种基于发布-订阅模式的事件处理方式,使得在Spring应用中的不同组件之间可以进行解耦通信。这个机制允许一个组件(通常是一个服务)触发一个事件,然后其他感兴趣...

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

    在Spring中,事件监听机制由三部分组成:事件(ApplicationEvent)、事件监听器(ApplicationListener)和事件广播器(ApplicationEventMulticaster)。接下来我们将深入探讨这些概念以及如何在实际应用中使用它们。...

    Learn Microservices with Spring Boot

    Build a microservices architecture with Spring Boot, by evolving an application from a small monolith to an event-driven architecture composed of several services. This book follows an incremental ...

    Spring的配置以及事件注入

    Spring提供了ApplicationEvent和ApplicationListener接口来实现事件处理。当你有一个事件需要在整个应用中传播时,可以创建一个自定义的事件类,继承自ApplicationEvent。例如: ```java public class CustomEvent ...

    11 spring IoC容器中事件event消息的发送和接收内部工作原理揭秘慕课专栏1

    在Spring框架中,事件(event)机制是一种用于解耦生产者和消费者的重要设计,它遵循了设计原则中的单一职责和开闭原则,增强了系统的扩展性。Java提供了两种消息通知方式:观察者模式和监听器模式。 观察者模式下,...

    第十七章 Spring 事件(Events)1

    面向接口的事件/监听器设计模式在Spring中体现为`ApplicationListener`接口。这个接口扩展了Java的`EventListener`,并专门用于处理Spring应用上下文(ApplicationContext)事件。例如,通过实现`Application...

Global site tag (gtag.js) - Google Analytics