Springboot事件监听器的使用
Springboot事件监听器的基本使用:
第一种情况:
上下文更新事件(ContextRefreshedEvent):该事件会在ApplicationContext被初始化或者更新时发布。也可以在调用ConfigurableApplicationContext接口中的refresh()方法时被触发。@Component public class LearnListener implements ApplicationListener{ @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{ @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); }两种方式都可以启动事件监听器。