Spring ApplicationListener Spring ApplicationListener的使用详解
happy9527 人气:0介绍
Spring ApplicationListener 是Spring事件机制的一部分,与ApplicationEvent抽象类结合完成ApplicationContext的事件通知机制.
ContextRefreshedEvent事件监听
以Spring的内置事件ContextRefreshedEvent为例,当ApplicationContext被初始化或刷新时,会触发ContextRefreshedEvent事件.如下代码示例:
@Component public class LearnListener implements ApplicationListener<ContextRefreshedEvent> { @Override public void onApplicationEvent(ContextRefreshedEvent event) { //获取所有的bean String[] definitionNames = event.getApplicationContext().getBeanDefinitionNames(); for (String name : definitionNames) { //打印名称 System.out.println("name = " + name); } } }
自定义事件
代码
//继承ApplicationEvent 抽象类就可以自定义事件模型 public class MyEvent extends ApplicationEvent { private Long id; private String message; public MyEvent(Object source) { super(source); } public MyEvent(Object source, Long id, String message) { super(source); this.id = id; this.message = message; } //get set 方法省略 }
//实现ApplicationListener接口 @Component public class MyListener implements ApplicationListener<MyEvent> { @Override public void onApplicationEvent(MyEvent event) { System.out.println("监听到事件: "+event.getId()+"\t"+event.getMessage()); } }
测试
@SpringBootTest @RunWith(SpringRunner.class) public class ListenerTest { @Autowired private ApplicationContext applicationContext; @Test public void testListenner() { MyEvent myEvent = new MyEvent("myEvent", 9527L, "十二点了 该吃饭了~"); applicationContext.publishEvent(myEvent); // System.out.println("发送结束"); } }
结果
加载全部内容