zoukankan      html  css  js  c++  java
  • 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/上,如要转载,请注明出处!

  • 相关阅读:
    ASP.NET Session
    表格导入和导出
    C#根据当前时间获取其他时间
    SuperGridControl全局设置
    无框窗体移动
    窗体在屏幕边缘隐藏
    comboBoxEx
    CROSS JOIN
    supergirdcontrol单元格添加控件
    ADVtree
  • 原文地址:https://www.cnblogs.com/shamo89/p/11774293.html
Copyright © 2011-2022 走看看