美文网首页
Guava学习——EventBus

Guava学习——EventBus

作者: Impact | 来源:发表于2016-12-27 17:10 被阅读0次

学习Eventbus的相关知识,留存记录,待以后查看。


环境说明:windows7/JDK7/guava-18.0


EventBus简介

Guava是Google的一个核心库,有很多好用的工具,开源在Github上,地址:google/guava。其中对事件处理的模块是EventBus。利用设计模式中的观察者模式,实现对时间的监听、发布和订阅。阅读源码,并参考WikiAPI文档来写一些例子学习。

Guava引用

Maven配置,在pom.xml文件中引入:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>18.0</version>
</dependency>

注:guava对JAVA的版本有要求,最低是JDK 1.6,21.0版本之后要求JDK 1.8。

EventBus概述
  • 订阅事件:

事件的订阅方法中,只接受一个参数:事件。将需要处理的事件封装成一个对象,在需要对该事件进行处理时再发布。

  • 接收并处理事件:

在处理事件的方法上,加 @Subscribe 标签,调用 EventBus 的 register(Object) 方法注册。

  • 发布事件:

调用 EventBus 的 post(Object) 发布事件,这是顺序执行事件的处理方法,需要异步处理时,用 AsyncEventBus。


测试

事件对象

事件:为每个学生创建学籍。

public class StudentEvent{

    private String name;
    
    public StudentEvent(String name){
        this.name=name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

监听事件

有学生则为其创建学籍。两个方法都有 @Subscribe 标签,所以当有该事件发布时,两个方法都会执行。

import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;

public class StudentEventListener {

    /**
     * 事件处理,创建学籍
     * @param event
     */
    @Subscribe
    public void listenStudentEvent(StudentEvent event) {
        System.out.println("正在为学生"+event.getName()+"创建学籍,请稍候!");
        System.out.println("......");
        System.out.println(event.getName()+"的学籍创建完成!");
    }
    
    /**
     * 查询学籍信息
     * @param event
     */
    @Subscribe
    public void listen_2(StudentEvent event) {
        System.out.println("...查询"+ event.getName() +"学籍信息...");
    }
}
注册发布
import org.junit.Test;

import com.google.common.eventbus.EventBus;

public class TestRunEventBus {

        @Test
        public void testEvent() throws Exception {

            EventBus eventBus = new EventBus("student");
            StudentEventListener listener = new StudentEventListener();

            //注册
            eventBus.register(listener);

            eventBus.post(new StudentEvent("小明"));
        }
}

测试结果
正在为学生小明创建学籍,请稍候!
......
小明的学籍创建完成!
...查询小明学籍信息...

相关文章

  • 【Guava学习】EventBus

    1,简单使用 首先引入guave的依赖; 再来看一下基础的使用: 首先需要一个总线EventBus,直接new出来...

  • Guava学习——EventBus

    学习Eventbus的相关知识,留存记录,待以后查看。 环境说明:windows7/JDK7/guava-18.0...

  • Guava EventBus

    http://www.baeldung.com/guava-eventbus

  • Guava--EventBus学习

    最近在项目中,发现有人在用EventBus做事件监听,当时我就觉得很厉害。赶紧学习一下,Goole真是厉害。 一个...

  • Guava EventBus

    我称其为单块架构的利器 前言 在设计模式中, 有一种叫做发布/订阅模式, 即某事件被发布, 订阅该事件的角色将自动...

  • Guava——EventBus

    EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。对于事件监...

  • Guava - EventBus(事件总线)

    Guava在guava-libraries中为我们提供了事件总线EventBus库,它是事件发布订阅模式的实现,让...

  • Guava之EventBus

    EventBus 采用推的方式将消息发送给订阅者 1)Listener存在继承关系 AListener exte...

  • guava EventBus使用

    EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。对于事件监...

  • Guava之EventBus源码

    最近需要使用事件驱动,打算使用EventBus管理事件的注册和分发。于是仔细阅读了下Guava的EventBus实...

网友评论

      本文标题:Guava学习——EventBus

      本文链接:https://www.haomeiwen.com/subject/krrevttx.html