文档章节

spring ApplicationEventPublisherAware、ApplicationEventPublisher 的使用发布订阅模式

f
 fashionbrot
发布于 2019/11/22 13:57
字数 278
阅读 56
收藏 0

通过实现 ApplicationEventPublisherAware 接口获取   ApplicationEventPublisher ,然后根据 ApplicationEventPublisher 发布对应消息,用于业务解耦部分。 实现 ApplicationListener<T> spring 监听接口 就可以获取对应的消息,可根据以下代码了解

1、当执行 TestApplicationEventPublisherAware 方法初始化的时候就会触发通知 afterPropertiesSet

public class TestApplicationEventPublisherAware implements ApplicationEventPublisherAware, InitializingBean {

    private ApplicationEventPublisher applicationEventPublisher;


    @Override
    public void afterPropertiesSet() throws Exception {
        TestEvent testEvent=new TestEvent(this);
        testEvent.setTest("test");
        applicationEventPublisher.publishEvent(testEvent);
    }


    @Override
    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
        this.applicationEventPublisher= applicationEventPublisher;
    }
}

2、TestApplicationListener 接收通知 通过实现 ApplicationListener 的  onApplicationEvent方法接收通知

import org.springframework.context.ApplicationListener;

/**
 * 实现 ApplicationListener 接口 可通过 onApplicationEvent方法获取事件
 */
public class TestApplicationListener implements ApplicationListener<TestEvent> {



    @Override
    public void onApplicationEvent(TestEvent event) {
        //接收通知
        System.out.println(event.getTest());
    }
}

3、创建 TestEvent 继承 ApplicationEvent 必须创建 父类的构造器

import lombok.Data;
import org.springframework.context.ApplicationEvent;

@Data
public class TestEvent extends ApplicationEvent {

    private String test;

    /**
     * Create a new ApplicationEvent.
     *
     * @param source the object on which the event initially occurred (never {@code null})
     */
    public TestEvent(Object source) {
        super(source);
    }
}

 

如有问题联系 qq:960885984

© 著作权归作者所有

f

fashionbrot

粉丝 2
博文 4
码字总数 3844
作品 3
海淀
私信 提问
加载中

评论(0)

spring学习笔记(二)spring 事件的使用

spring 中的事件 spring事件通过订阅发布 可以解耦操作 可以同步 可以异步 步骤 编写事件 通过继承 来编写事件 为事件传递的资源,在使用场景中 可以是数据,也可以是函数。事件事例如下: ...

NotFound403
2018/12/19
90
0
《Spring Recipes》第二章笔记:event-based communication

《Spring Recipes》第二章笔记:event-based communication 问题 在bean之间添加事件驱动的通信。 解决方案 1、事件类需要继承ApplicationEvent。实现构造函数,在事件类中添加用于传递信息的...

LiJIaming
2012/05/19
142
0
spring-session(一)揭秘续篇

上一篇文章中介绍了Spring-Session的核心原理,Filter,Session,Repository等等,传送门:spring-session(一)揭秘。 这篇继上一篇的原理逐渐深入Spring-Session中的事件机制原理的探索。众...

BryceLoski
2019/07/09
110
0
Spring核心——全局事件管理

ApplicationContext是一个Context策略(见上下文与IoC),他除了提供最基础的IoC容器功能,还提供了MessageSource实现的国际化、全局事件、资源层级管理等等功能。本文将详细介绍Spring核心模...

随风溜达的向日葵
2018/08/08
593
1
spring cloud config与bus结合

整体流程 默认gitlab的webhook更新调用config server的/monitor(spring-cloud-config-monitor)触发RefreshRemoteApplicationEvent事件,然后spring cloud bus的StreamListener监听RemoteApp......

go4it
2016/12/05
151
0

没有更多内容

加载失败,请刷新页面

加载更多

UGUI图片层级和渲染顺序的奇怪关系

之前见别人的文章总是说,在Hierachy下,相同图集的图片要连续排列,这样Unity会对相同图集的图片进行合批,从而减少draw call。今天做了简单的试验发现情况并不是这么简单的。 第一种情况:...

myctrd
20分钟前
33
0
jQuery中$.each()方法的使用-Json对象-dom元素

对于循环我们首先会想到for循环,但是在前端对数组我们可以使用,但是对于json对象,想把对象中的属性的key-value循环去取出,那么for循环提供不了的。而each方法则给我们提供了便利,下面介...

imzchloe
30分钟前
50
0
Linuxprobe第六天

待补充

nt狮子男人
31分钟前
50
0
gem install:无法构建gem native扩展(找不到头文件)

我正在使用Fedora 14,我安装并运行了MySQL和MySQL服务器5.1.42。 现在我尝试以root用户身份执行此操作: gem install mysql 但我得到这个错误: Building native extensions. This could ...

技术盛宴
38分钟前
51
0
就8张图片带你搞清楚JS的原型链

JS(JavaScript)是目前互联网开发中十分重要的一门编程语言,他承载着网页、手机应用程序、硬件程序、微信、微信小程序中的各种特效及处理逻辑功能。

涂老师
41分钟前
52
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部