簡體   English   中英

spring boot如何注銷guava eventbus監聽器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM