文档章节

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

码农小胖哥
 码农小胖哥
发布于 2018/12/19 23:22
字数 386
阅读 156
收藏 3

spring 中的事件

spring事件通过订阅发布 可以解耦操作 可以同步 可以异步

步骤

  • 编写事件 通过继承org.springframework.context.ApplicationEvent 来编写事件
	public ApplicationEvent(Object source) {
		super(source);
		this.timestamp = System.currentTimeMillis();
	}

source 为事件传递的资源,在使用场景中 可以是数据,也可以是函数。 事件事例如下:

public class MySpringEvent extends ApplicationEvent {

    private boolean signal;

    /**
     * Create a new ApplicationEvent.
     *
     * @param signal  这里我传递一个信号到事件监听器中
     */
    public MySpringEvent(Boolean signal) {
        super(signal);
        this.signal=signal;
    }

    public void doSomething() {
        System.out.println("i am  an  event");
    }

    public boolean isSignal() {
        return signal;
    }
}



  • 发布事件 发布事件通过实现 事件发布接口org.springframework.context.ApplicationEventPublisher 或者 其门面接口org.springframework.context.ApplicationEventPublisherAware 推荐门面接口

相关实现如下:

 
public class MySpringEventPublisherAware implements ApplicationEventPublisherAware {
    private ApplicationEventPublisher applicationEventPublisher;

    private MySpringEvent mySpringEvent;

    public MySpringEventPublisherAware(MySpringEvent mySpringEvent) {
        this.mySpringEvent = mySpringEvent;
    }

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

    /**
     * 发送事件动作   事件的动作需要主动触发
     */
    public void refreshEvent() {
        System.out.println(">>>>>>>>>>>>>>>>>>>");
        this.applicationEventPublisher.publishEvent(mySpringEvent);
    }


}

需要特别注意的是 该发布器需要注册为spring bean 而且需要主动调用 org.springframework.context.ApplicationEventPublisher#publishEvent(ApplicationEvent event) 来触发事件

  • 编写监听器 通过实现 org.springframework.context.ApplicationListener<E extends ApplicationEvent> 来实现事件的监听

public class MyApplicationEventListener implements ApplicationListener<MySpringEvent> {
    @Override
    public void onApplicationEvent(MySpringEvent event) {
           event.doSomething();

            System.out.println(event.isSignal());
    }

}

通过泛型来限制监听的事件类型,该监听器同样需要注册为spring bean。

  • 测试用例

© 著作权归作者所有

码农小胖哥

码农小胖哥

粉丝 136
博文 136
码字总数 161496
作品 1
郑州
程序员
私信 提问
加载中

评论(0)

【从零开始学Spring笔记】Spring学习路线

大家可以关注作者的账号,关注从零开始学Spring笔记文集。也可以根据目录前往作者的博客园博客进行学习。本片文件将基于黑马程序员就业班视频进行学习以及资料的分享,并记录笔记和自己的看法...

朱李洛克
昨天
0
0
Mybatis 学习笔记三 搭配pageHelper分页插件使用

Mybatis 学习笔记三 搭配pageHelper分页插件使用 基于《Mybatis 学习笔记二 与spring搭配》 maven依赖 配置 mybatis配置 conf.xml 注意:保持基本配置即可; spring配置 applicationContext...

晨猫
2018/11/16
702
1
springmvc学习笔记(6)-springmvc整合mybatis(IDEA中通过maven构建

springmvc学习笔记(6)-springmvc整合mybatis(IDEA中通过maven构建) 标签: springmvc mybatis [TOC] 本文主要展示如何在intellij IDEA中通过maven构建springmvc+mybatis框架的开发环境。 需求...

brianway
2016/03/10
527
0
Spring框架学习笔记(三)

上接Spring框架学习笔记(二) 1 基于aspectj的注解aop操作 1 使用注解方式实现aop操作 第一步 创建对象 第二步 在spring核心配置文件中,开启aop操作 第三步 在增强类上面使用注解完成aop操...

稻草人的信仰
2018/04/23
0
0
day33_Spring学习笔记_01

零、蓦然回首 Struts2:web层,比较简单(难点:ValueStack值栈、拦截器) Hibernate:dao层,知识点杂(学了不用,默认设置够用了) Spring:service层,重要,(讲多少用多少) Spring课程...

黑泽明军
2018/07/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SQL重复记录查询的几种方法

1 查找表中多余的重复记录,重复记录是根据单个字段 1 select * from TB_MAT_BasicData12 where MATNR in ( select MATNR from TB_MAT_BasicData1 group by MATNR having count(MATNR)>1)......

osc_vvylzpqs
9分钟前
9
0
十行代码让你的单机“影分身”,分布式训练速度快到飞起

工程师:“在你辉煌的时刻,让我为你唱首歌,我的好兄弟,心里有苦你对我说。” 计算机:“哥啊,那我可就说了,我是真的苦啊,现在一个模型动辄好几亿参数,数据集也是大的吓人,兄弟我内存...

飞桨PaddlePaddle
10分钟前
9
0
mysql: The target table of the UPDATE is not updatable

目标是批量更新目标表部分字段的数据 操作内容: 1.创建临时表 drop table if exists tempTableXXX create table tempTableXXX ( TEMP_ID int not null, BM varchar(14) ) 2.把数据存入临...

osc_5g68egoj
11分钟前
8
0
java 异常链

在设计模式中有一个叫做责任链模式,该模式是将多个对象链接成一条链,客户端的请求沿着这条链传递直到被接收、处理。同样 Java 异常机制也提供了这样一条链:异常链。 我们知道每遇到一个异...

osc_0bpc54vt
12分钟前
8
0
Go语言开发的微服务框架

 Go语言开发的微服务框架有什么?   1、项目名称:Istio   项目简介:Istio是由Google、IBM和Lyft开源的微服务管理、保护和监控框架。使用istio可以很简单的创建具有负载均衡、服务间认证...

osc_aitaq37i
15分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部