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