[英]spring boot how to unregister guava eventbus listener?
有一個Spring Boot應用程序。 我創建了一個類似UserCreateEvent
的事件,並有一個監聽器UserCreateListener
事件:
public class UserCreateEvent {
private Long userId;
}
聽眾:
@Component
public class UserCreateListener {
@Autowired
private Eventbus eventbus;
@PostConstruct
public void init() {
this.eventbus.register(this)
}
@Subscribe
public void onUserCreate(UserCreateEvent event) {
Long userId = event.getUserId();
// todo something necessary
}
}
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(Application.class);
application.run(args);
}
}
現在,我想在春季啟動應用程序啟動后注銷UserCreateListener
。 如何使Eventbus
取消注冊此事件和偵聽器?
在UserCreateListener
引入unregister()
方法
@Component
public class UserCreateListener {
@Autowired
private Eventbus eventbus;
@PostConstruct
public void init() {
this.eventbus.register(this)
}
public void unregister() {
this.eventbus.unregister(this)
}
}
然后,如果要注銷,請自動連接UserCreateListener(或從應用程序上下文檢索Bean)並調用listenerInstance.unregister()
UPDATE
創建您自己的組件,然后在此處調用注銷。 猜聽者和事件總線是單例。
@Component
public class MyUnregisterService {
@Autowired
private Eventbus eventbus;
@Autowired
private UserCreateListener listener;
public void unregister() {
eventbus.unregister(listener)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.