google guava事件总线用法

来源:互联网 发布:平面设计怎么样知乎 编辑:程序博客网 时间:2024/06/11 00:32

Google EventBus

组成部分

  1. 事件(什么类型的事件);
  2. 事件监听器,即事件处理程序(响应);

  3. 注册事件监听器(register);

  4. 触发事件(trigger/post);

实例

事件,可以是任何自定义对象

/** * Created by whuanghkl on 17/6/22.<br /> * 自定义事件 */public class AccessLoggerEvent {}

事件监听器

/** * Created by whuanghkl on 17/6/22.<br /> * 事件监听器 */@Componentpublic class AccessLoggerListener {    @Resource    private EventBus eventBus;    @PostConstruct    public void init() {        eventBus.register(this);    }    @Subscribe    public void logEvent(AccessLoggerEvent event) {        System.out.println("logEvent");    }}

事件监听器自己注册到eventBus

在控制器中触发事件

AccessLoggerEvent accessLoggerEvent = new AccessLoggerEvent();        eventBus.post(accessLoggerEvent);

问题

  1. 什么时候注册事件监听器?
    在事件监听器创建完之后自动注册,使用注解 @PostConstruct
  2. 程序怎么知道那个事件监听器来响应?
    根据事件对象类型(可以是String等系统类型,也可以是自定义类)

参考:
spring+guava事件异步分发处理
Guava EventBus Spring

原创粉丝点击