{"id":1796,"date":"2023-03-27T22:38:16","date_gmt":"2023-03-27T14:38:16","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=1796"},"modified":"2023-04-23T21:12:56","modified_gmt":"2023-04-23T13:12:56","slug":"spring-boot-eventbus-tutorial","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/03\/27\/spring-boot-eventbus-tutorial\/","title":{"rendered":"Spring Boot + EventBus\u4f7f\u7528\u6559\u7a0b"},"content":{"rendered":"<h2>\u7b80\u4ecb<\/h2>\n<p>EventBus\u662f\u4e00\u4e2a\u57fa\u4e8e\u53d1\u5e03\u8ba2\u9605\u7684\u4e8b\u4ef6\u603b\u7ebf\uff0c\u5728Java\u548cAndroid\u91cc\u90fd\u53ef\u4ee5\u4f7f\u7528\u3002<br \/>\nEventBus\uff1a<a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/github.com\/greenrobot\/EventBus\">https:\/\/github.com\/greenrobot\/EventBus<\/a><\/p>\n<p><!-- more --><\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.yezhou.me\/AppBlog\/images\/Java\/EventBus.png\" alt=\"EventBus\" \/><\/p>\n<h2>\u4f7f\u7528<\/h2>\n<h3>\u5f15\u5165pom<\/h3>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\n    &lt;groupId&gt;org.greenrobot&lt;\/groupId&gt;\n    &lt;artifactId&gt;eventbus&lt;\/artifactId&gt;\n    &lt;version&gt;3.1.1&lt;\/version&gt;\n&lt;\/dependency&gt;<\/code><\/pre>\n<h3>\u5b9a\u4e49\u4e8b\u4ef6\u76d1\u542c\u7c7b<\/h3>\n<pre><code class=\"language-java\">@Slf4j\n@Component\npublic class EventListener {\n    @Subscribe\n    public void onMessageEvent(String event) {\n        log.info(&quot;Subscribe message:{}&quot;, event);\n    }\n}<\/code><\/pre>\n<h3>EventBusConfig<\/h3>\n<pre><code class=\"language-java\">@Configuration\npublic class EventBusConfig {\n\n    @Bean\n    public EventBus eventBus() {\n        return new EventBus();\n    }\n}<\/code><\/pre>\n<h3>EventHandler<\/h3>\n<pre><code class=\"language-java\">@Component\n@Slf4j\npublic class EventHandler {\n\n    @Autowired\n    private EventBus eventBus;\n\n    @Autowired\n    private EventListener eventListener;\n\n    @PostConstruct\n    public void init() {\n        eventBus.register(eventListener);\n    }\n\n    @PreDestroy\n    public void destroy() {\n        eventBus.unregister(eventListener);\n    }\n\n    public void eventPost() {\n        eventBus.post(&quot;test&quot;);\n        log.info(&quot;post event&quot;);\n    }\n}<\/code><\/pre>\n<h3>\u6d4b\u8bd5\u7c7b<\/h3>\n<pre><code class=\"language-java\">@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class EventBusTest {\n\n    @Autowired\n    private EventHandler eventHandler;\n\n    @Test\n    public void postEvent() {\n        eventHandler.eventPost();\n    }\n}<\/code><\/pre>\n<h3>\u8fd0\u884c\u7ed3\u679c<\/h3>\n<pre><code>2019-11-01 22:33:28.657  INFO 6656 --- [     main] cn.appblog.test.eventbus.EventListener   : Subscribe message:test\n2019-11-01 22:33:28.671  INFO 6656 --- [     main] cn.appblog.test.eventbus.EventHandler    : post event<\/code><\/pre>\n<h2>\u81ea\u5b9a\u4e49\u4e8b\u4ef6<\/h2>\n<p>\u4e0a\u9762\u7684\u4f8b\u5b50\uff0c\u6211\u4eec\u53d1\u9001\u548c\u63a5\u6536\u7684\u90fd\u662fString\uff0c\u5982\u679c\u6211\u60f3event\u662f\u4e2abean\uff0c\u600e\u4e48\u64cd\u4f5c\uff1f<\/p>\n<h3>\u6dfb\u52a0MessageEvent\u7c7b<\/h3>\n<pre><code class=\"language-java\">@Data\n@Builder\npublic class MessageEvent {\n\n    private Integer id;\n    private String name;\n}<\/code><\/pre>\n<h3>\u4fee\u6539EventHandler\u91cc\u7684eventPost\u65b9\u6cd5<\/h3>\n<pre><code class=\"language-java\">public void eventPost() {\n    eventBus.post(MessageEvent.builder().id(1).name(&quot;test&quot;).build());\n    log.info(&quot;post event&quot;);\n}<\/code><\/pre>\n<h3>\u4fee\u6539EventListener\u7c7b\u91cc\u7684onMessageEvent\u65b9\u6cd5<\/h3>\n<pre><code class=\"language-java\">@Subscribe\npublic void onMessageEvent(MessageEvent event) {\n    log.info(&quot;Subscribe message:{}&quot;, event);\n}<\/code><\/pre>\n<h3>\u8fd0\u884c\u6d4b\u8bd5\u7c7b\uff0c\u67e5\u770b\u7ed3\u679c<\/h3>\n<pre><code>2019-11-01 22:53:28.273  INFO 2252 --- [     main] cn.appblog.test.eventbus.EventListener   : Subscribe message:MessageEvent(id=1, name=test)\n2019-11-01 22:53:28.278  INFO 2252 --- [     main] cn.appblog.test.eventbus.EventHandler    : post event<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u7b80\u4ecb EventBus\u662f\u4e00\u4e2a\u57fa\u4e8e\u53d1\u5e03\u8ba2\u9605\u7684\u4e8b\u4ef6\u603b\u7ebf\uff0c\u5728Java\u548cAndroid\u91cc\u90fd\u53ef\u4ee5\u4f7f\u7528\u3002 EventBus [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[41],"tags":[327],"class_list":["post-1796","post","type-post","status-publish","format-standard","hentry","category-spring-boot","tag-eventbus"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/1796","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=1796"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/1796\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=1796"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=1796"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=1796"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}