SpringBoot+EventBus使用教程(一) - 那啥快看 - 博客园

一、简介

EventBus是一个基于发布订阅的事件总线,在Java和Android里都可以使用。

二、使用

1.引入pom

<dependency>

        <groupId>org.greenrobot</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() {
    eventBus.register(eventListener);
}

@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 { 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地址:https://github.com/greenrobot/EventBus

另外,本篇教程使用了lombok插件。

本文系本人原创,同步更新在我的独立博客http://791202.com/上,如要转载,请注明出处!


原网址: 访问
创建于: 2021-01-21 15:36:49
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论