google guava事件总线用法

Google EventBus

组成部分

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

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

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

实例

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

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

事件监听器

/**
 * Created by whuanghkl on 17/6/22.
* 事件监听器 */
@Component public 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

你可能感兴趣的:(java,web,java,spring-mvc)