java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring ApplicationListener

Spring ApplicationListener的使用详解

作者:happy9527

这篇文章主要介绍了Spring ApplicationListener的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

介绍

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("发送结束");
  }
}

结果

到此这篇关于Spring ApplicationListener的使用详解的文章就介绍到这了,更多相关Spring ApplicationListener 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文