一、简介
org.greenrobot.eventbus 是一个开源的事件总线库,用于实现发布-订阅模式的事件通信。
二、代码
2.1 添加依赖
<!-- https://mvnrepository.com/artifact/org.greenrobot/eventbus -->
<dependency>
<groupId>org.greenrobot</groupId>
<artifactId>eventbus</artifactId>
<version>3.3.1</version>
</dependency>
2.2 消息类
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EventMessage {
private String topic;
private Object data;
}
2.3 发布事件
@Slf4j
@Component
public class UpdateDeptEventSend {
/**
* 发布事件
*/
public void sendEvent() {
EventMessage eventMessage = EventMessage.builder()
.topic("update_dept")
.build();
EventBus.getDefault().post(eventMessage);
}
}
2.4 注册事件
@Component
@Slf4j
public class FlowEventHandler {
@Resource
private UpdateDeptListener updateDeptListener;
@PostConstruct
public void init() {
EventBus.getDefault().register(updateDeptListener);
}
@PreDestroy
public void destroy() {
EventBus.getDefault().unregister(updateDeptListener);
}
}
2.5 监听事件
@Slf4j
@Component
public class UpdateDeptListener {
@Subscribe
public void onMessageEvent(EventMessage eventMessage) {
if (!"update_dept".equals(eventMessage.getTopic())) {
return;
}
//处理业务逻辑
}
}
网友评论