文档章节

Spring4 版 eventbus 事件通信 事件驱动 介绍

筱龙缘
 筱龙缘
发布于 2016/03/24 13:18
字数 300
阅读 283
收藏 8

开始使用

1. 事件发送器

    @Autowired
    ApplicationEventPublisher eventPublisher;

2. 发送事件

    //订单准备工作完成 , 使订单生效
    eventPublisher.publishEvent(new OrderEffectEvent(order.getId()));

例子 OrderEffectEvent类的定义(其实就是一个普通的java bean)

public final class OrderEffectEvent implements IOrderEvent {


   @Getter
   private final String orderId;


   public OrderEffectEvent(String orderId) {
       this.orderId = orderId;


   }
}

3 在需要处理的地方接收发送的事件,使用@EventListener 注解

   /**
    * 使订单生效
    *
    * @param event 订单生效事件
    * @return
    */
   @EventListener
   public void handlerEffectOrder(OrderEffectEvent event) {
      
      // do some thing
   }


@EventListener 还支持事件过滤,例如 下面这个例子只想接收到 订单业务类型为 MONTHLY 的事件

注意 condition 内容为sqEl 表达式 需要返回类型为 boolean

  /**
    * 订单未支付,取消业务状态
    *
    * @param event 订单事件
    */
   @EventListener(condition = "T(com.xxx.Order.BizType).MONTHLY eq #event.orderType")
   public void handlerEvent(OrderPayExpireEvent event) {


   }

注意 泛型也是支持的

  /**
    *
    * @param event 新增事件
    */
   @EventListener
   public void handlerEvent(ICreateEvent event) {
       
      // switch (event)
      // if(event instanceof OrderCreateEvent )

   }

4 扩展阅读

© 著作权归作者所有

共有 人打赏支持
筱龙缘

筱龙缘

粉丝 20
博文 29
码字总数 13048
作品 1
南京
程序员
私信 提问
Guava库学习:学习Guava EventBus(一)EventBus

在软件开发过程中,对象信息的分享以及相互直接的协作是必须的,困难在于确保对象之间的沟通是有效完成的,而不是拥有成本高度耦合的组件。当对象对其他组件的责任有太多的细节时,它被认为是...

Realfighter
2014/12/29
0
0
guava eventbus源码解析

说在前面 本文转自“天河聊技术”微信公众号 事件驱动模型设计是一种优雅的程序设计方式,实现有很多,原理都是发布与订阅,观察者设计模式实现,java自带的实现、spring ioc的事件驱动模型,...

天河2018
2018/07/07
0
0
为JFinal添加event消息事件

在之前使用spring mvc的时候,在复杂的下单和支付中有一部分功能使用的Spring事件驱动模型去完成!具体优点不啰嗦了,发现涛哥有篇文章讲得比较详细:[详解Spring事件驱动模型][1] 最初准备基...

如梦技术
2015/04/28
0
20
Android框架之路——EventBus的使用

一、简介 EventBus是由greenrobot 组织贡献的一个Android事件发布/订阅轻量级框架。EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的...

天王盖地虎626
02/15
0
0
走近Guava(六): 事件总线EventBus

EventBus: 创建EventBus实例: EventBus eventBus = new EventBus();//或者EventBus eventBus = new EventBus(TradeAccountEvent.class.getName());//带标识符,用于日志记录 订阅事件: 模拟......

ihaolin
2014/04/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java网络编程

基本概念 网络IO会涉及到同步,异步,阻塞,非阻塞等几个概念。 一个网络IO读取过程是数据从 网卡 到 内核缓冲区 到 用户内存 的过程。同步和异步区别在于数据从内核到用户内存的过程是否需要...

春哥大魔王的博客
30分钟前
1
0
Spring "reg:zookeeper" 的前缀 "reg" 未绑定等类似问题解决方案。

今天同事遇到一个Spring启动加载配置文件时,不识别reg:zookeeper标签的问题。 我查看配置,发现是Spring配置文件的头部没有引入reg标签的命名空间,具体如下图: 所以,以后遇到类似的标签未...

花漾年华
59分钟前
1
0
阿里云领衔云市场

近期,2018年Q4及全年的全球云基础设施服务市场数据新鲜出炉,发布方是美国市场研究机构Synergy Research Group。这个机构是专做电信网络市场情报的公司,成立于1999年,每年都会公布各大公有...

linuxCool
今天
2
0
C++友元函数和友元类(C++ friend)详解

私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行。这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书...

shzwork
今天
3
0
JAVA对map进行分组

public static Map<String, List<Map<String, Object>>> transition(List<Map<String, Object>> list){ Map<String, List<Map<String, Object>>> map = new HashMap<>(); //......

火龙战士
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部