Google EventBus
组成部分
- 事件(什么类型的事件);
事件监听器,即事件处理程序(响应);
注册事件监听器(register);
- 触发事件(trigger/post);
实例
事件,可以是任何自定义对象
/**
* Created by whuanghkl on 17/6/22.<br />
* 自定义事件
*/
public class AccessLoggerEvent {
}
事件监听器
/**
* Created by whuanghkl on 17/6/22.<br />
* 事件监听器
*/
@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);
问题
- 什么时候注册事件监听器?
在事件监听器创建完之后自动注册,使用注解 @PostConstruct - 程序怎么知道那个事件监听器来响应?
根据事件对象类型(可以是String等系统类型,也可以是自定义类)