Springboot事件監聽器的使用
阿新 • • 發佈:2020-11-04
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> { @Overridepublic 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); }兩種方式都可以啟動事件監聽器。