1. 程式人生 > 實用技巧 >Springboot事件監聽器的使用

Springboot事件監聽器的使用

Springboot事件監聽器的基本使用:

第一種情況:

上下文更新事件(ContextRefreshedEvent):該事件會在ApplicationContext被初始化或者更新時釋出。也可以在呼叫ConfigurableApplicationContext介面中的refresh()方法時被觸發。
@Component
public class LearnListener implements ApplicationListener<ContextRefreshedEvent> {


  @Override
  public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
    
//獲取所有的bean String[] definitionNames = contextRefreshedEvent.getApplicationContext().getBeanDefinitionNames(); System.out.println(definitionNames.length); } }

第二種:自定義事件監聽器:

首先是:監聽的活動類。

public class MyApplicationEvent extends ApplicationEvent {

  private Integer id;


  public MyApplicationEvent(Object source) {
    
super(source); } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Override public String toString() { return "MyApplicationEvent{" + "id=" + id + '}'; } }

然後是事件監聽器的類:

@Component
public class MyListener implements ApplicationListener<MyApplicationEvent> {

  @Override
  
public void onApplicationEvent(MyApplicationEvent myApplicationEvent) { System.out.println("監聽到的事件:"+myApplicationEvent.toString()); } }

最後:

如果需要啟動事件監聽器怎麼辦?

在需要使用的地方注入

        @Resource
    private ApplicationContext applicationContext;

    @Autowired
    protected ApplicationEventPublisher eventPublisher;

    @Test
    void contextLoads() {
        MyApplicationEvent myApplicationEvent = new MyApplicationEvent("myEvent");

        myApplicationEvent.setId(1);
        eventPublisher.publishEvent(myApplicationEvent);
        applicationContext.publishEvent(myApplicationEvent);

    }    

兩種方式都可以啟動事件監聽器。