guava的事件發佈訂閱功能

事件的重要性,不用說很重要,在不少時候咱們作完一個操做的時候,須要告知另一個對象讓他執行相應操做,好比當用戶註冊成功的時候,須要拋出一個註冊成功的事件,那麼有監聽器捕獲到這個事件,完成後續用戶信息初始化的功能。java

其實事件發佈訂閱很簡單,總得來講就2個重要對象:①事件的定義②監聽器的定義函數

 

一,事件的定義post

guava的事件定義不須要繼承某個類或者實現某個接口,只須要正常的java bean對象便可
this

public class UserRegisteredEvent implements Serializable {
    private static final long serialVersionUID = 0L;
    private Long userId;

    public UserRegisteredEvent(Long userId) {
        this.userId = userId;
    }

    public Long getUserId() {
        return this.userId;
    }
}//用戶註冊事件,這個事件拋出的時候能夠攜帶傳遞一個用戶的ID

 

二,監聽器的編寫spa

 

@Component
public class UserRegisterListener {
    @Autowired
    private EventBus eventBus;//自動注入guava的EventBus

    @RpcConsumer
    private UserService userService;

    public VegaUserRegisterListener(){
        super();
    }

    @PostConstruct
    public void register() {
        eventBus.register(this);
    }//構造方法完成後,將這個監聽器註冊到EventBus中,至關於訂閱

    @Subscribe//這個註解就是捕獲到相應事件後處理對應函數
    public void initUserRank(UserRegisteredEvent userRegisteredEvent) {
     userService.initUserRank(userRegisteredEvent.getUserId());//初始化用戶信息
    
    }

}

 

ok,完成是否是很簡單,事件的拋出只須要在須要拋出的地方調用 eventBus.post(Object object)方法便可。code

相關文章
相關標籤/搜索