Guava学习——EventBus

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


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


EventBus简介

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

Guava引用

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


    com.google.guava
    guava
    18.0

注: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)