Spring事件監聽實現

1、代碼結構
在這裏插入圖片描述
2、pom文件引入必要jar包

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.3.RELEASE</version>
</dependency>

3、業務代碼

  • 配置類
@Configuration
@ComponentScan("com.qing.zhao.event")
public class EventConfigration {
}
  • 自定義事件類
public class MyEvent extends ApplicationEvent {
    public MyEvent(Object source, String message) {
        super(source);
        System.out.println("自定義事件:"+message+": "+source);
    }

}
  • 監聽類
@Component
public class MyEventListener implements ApplicationListener<ApplicationEvent> {
    /**
     * 當容器中發佈ApplicationEvent事件時,該方法就會被觸發
     * @param applicationEvent
     */
    @Override
    public void onApplicationEvent(ApplicationEvent applicationEvent) {
        //省略相關業務處理邏輯
        if (applicationEvent instanceof MyEvent){
            System.out.println("我監聽到了自定義事件:"+applicationEvent.getSource());
        }else {
            System.out.println("我監聽都了Spring默認事件"+applicationEvent.getSource());
        }
    }
}
  • 事件發佈類
@Component
public class EventHandle {
    @Autowired
    private ApplicationContext applicationContext;

    public void sendEvent(String message){
        MyEvent myEvent = new MyEvent(this, message);
        applicationContext.publishEvent(myEvent);
    }
}

  • 測試類
public class EventTest {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(EventConfigration.class);
        EventHandle eventHandle = applicationContext.getBean(EventHandle.class);
        eventHandle.sendEvent("傳參");
        applicationContext.close();
    }
}

4、運行結果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章