SpringBoot+EventBus使⽤教程(⼀)⼀、简介
EventBus是⼀个基于发布订阅的事件总线,在Java和Android⾥都可以使⽤。
⼆、使⽤
1.引⼊pom
<dependency>
<groupId&obot</groupId>
<artifactId>eventbus</artifactId>
<version>3.1.1</version>
</dependency>
2.定义事件监听类
@Component
@Slf4j
public class EventListener {
@Subscribe
public void onMessageEvent(String event) {
log.info("Subscribe message:{}", event);
}
}
3.EventBusConfig
@Configuration
public class EventBusConfig {
@Bean
public EventBus eventBus(){
return new EventBus();
}
}
4.EventHandler
@Component
@Slf4j
public class EventHandler {
@Autowired
private EventBus eventBus;
@Autowired
private EventListener eventListener;
@PostConstruct
public void init() {
}
@PreDestroy
public void destroy() {
eventBus.unregister(eventListener);
}
public void eventPost(){
eventBus.post("test");
log.info("post event");
}
}
5.测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class EventBusTest {
@Autowired
private EventHandler eventHandler;
@Test
public void postEvent(){
eventHandler.eventPost();
}
}
6.运⾏结果
2019-11-01 22:33:24.657  INFO 6656 --- [          main] com.sww.bizhi.eventbus.EventListener    : Subscribe message:test
2019-11-01 22:33:24.671  INFO 6656 --- [          main] com.sww.bizhi.eventbus.EventHandler      : post event
三、⾃定义事件
上⾯的例⼦,我们发送和接收的都是string,如果我想event是个bean,怎么操作?
1.添加MessageEvent类
@Data
@Builder
public class MessageEvent {
springboot原理和机制private Integer id;
private String name;
}
2.修改EventHandler⾥的eventPost⽅法(红⾊字体部分)
public void eventPost(){
eventBus.post(MessageEvent.builder().id(1).name("test").build());
log.info("post event");
}
3.修改EventListener类⾥的onMessageEvent⽅法(红⾊字体部分)
@Subscribe
public void onMessageEvent(MessageEvent event) {
log.info("Subscribe message:{}", event);
}
4.运⾏测试类,查看结果
2019-11-01 22:53:24.273  INFO 2252 --- [          main] com.sww.bizhi.eventbus.EventListener    : Subscribe message:MessageEvent(id=1, name=test) 2019-11-01 22:53:24.278  INFO 2252 --- [          main] com.sww.bizhi.eventbus.EventHandler      : post event
四、最后
本篇初步介绍了如何在springboot⾥使⽤eventbus,下⼀篇⽂章将介绍如何集成spring-boot-starter-guava-eventbus EventBus地址:
另外,本篇教程使⽤了lombok插件。
本⽂系本⼈原创,同步更新在我的独⽴博客上,如要转载,请注明出处!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。