Java-SpringBoot-03-Application事件和监听器

简介: 在ApplicationContext创建之前,侦听器怎么注册

在ApplicationContext创建之前会触发一些事件,因此您无法将其注册为的侦听器@Bean。您可以通过SpringApplication.addListeners(…)或SpringApplicationBuilder.listeners(…) 方法注册它们 。

       如果您希望这些侦听器自动注册,而不管创建应用程序的方式如何,则可以将META-INF/spring.factories文件添加到项目中,并使用org.springframework.context.ApplicationListener 键引用侦听器。


应用程序事件在您的应用程序运行时按以下顺序发送:

ApplicationStartedEvent:在运行开始时发送,但在进行任何处理(侦听器和初始化程序的注册除外)之前都会发送。

ApplicationEnvironmentPreparedEvent:当Environment被发送到在上下文已经知道被使用,但是在创建上下文之前。

ApplicationPreparedEvent:在刷新开始之前但在Bean定义加载之后发送。

ApplicationReadyEvent:被刷新后发送和任何相关的回调已被处理,表示该应用程序已准备好服务请求。

ApplicationFailedEvent:如果在启动时异常发送。


比如要创建一个在应用运行开始时的监听事件:

packagecom.xing.studyboot.listener;
importorg.springframework.boot.context.event.ApplicationStartedEvent;
importorg.springframework.context.ApplicationListener;
importorg.springframework.stereotype.Component;
/***  ApplicationStartedEvent 监听器 * @author xing* @createTime*/@ComponentpublicclassApplicationStartedEventListenerimplementsApplicationListener<ApplicationStartedEvent> {
@OverridepublicvoidonApplicationEvent(ApplicationStartedEventevent) {
System.out.println("ApplicationStartedEventListener->"+event);
  }
}



上述代码 @Component 存在时,其实已经注册到了应用里,无需进行下一步,但是如果不用这个注解的话,可以在启动类中加入如下代码:

SpringApplicationspringApplication=newSpringApplication(StudybootApplication.class);
springApplication.setBanner(newMyBanner());//设置启动banner// 添加启动时事件监听器 建议采用 @Component注解实现springApplication.addListeners(
newApplicationStartedEventListener(),
newApplicationContextRefreshedEventLister()
      );
springApplication.run(args);


启动应用后,控制台可以发现监听器已经捕捉到了事件:

image.png


总结:

       Spring官网也说:您通常不需要使用应用程序的事件,但是知道它们的存在会很方便。在内部,Spring Boot使用事件来处理各种任务。

       嗯,这就是ApplicationContext创建或者报错时各种监听。


ApplicationListener的实现类,蛮多的:

image.png

目录
相关文章
|
3月前
|
前端开发 JavaScript Java
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
本文介绍了一个结合SpringBoot和Python的实用功能,旨在监控iPhone 15的库存状态并通过邮件提醒用户。系统采用SpringBoot监听苹果官网API,解析JSON数据判断是否有货,并展示最近的库存记录。此外,还能自动触发Selenium+Python脚本实现自动化购买。文中详细介绍了技术栈、接口分析、邮件配置及自动化脚本的设置方法。该项目不仅适用于熟悉后端开发的人员,也适合回顾Layui和Jquery等前端技术。
54 0
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
|
1月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
62 1
|
1月前
|
设计模式 Java Spring
Spring Boot监听器的底层实现原理
Spring Boot监听器的底层实现原理主要基于观察者模式(也称为发布-订阅模式),这是设计模式中用于实现对象之间一对多依赖的一种常见方式。在Spring Boot中,监听器的实现依赖于Spring框架提供的事件监听机制。
28 1
|
1月前
|
Java C#
Java的监听处理事件--小球移动案例
Java的监听处理事件--小球移动案例
13 0
|
3月前
|
缓存 Java 数据库
Spring Boot中使用监听器
系统的介绍了监听器原理,以及在 Spring Boot 中如何使用监听器,列举了监听器的三个常用的案例,有很好的实战意义。最后讲解了项目中如何自定义事件和监听器,并结合微服务中常见的场景,给出具体的代码模型,均能运用到实际项目中去,希望读者认真消化。
|
5月前
|
存储 NoSQL Java
大事件后端项目34_登录优化----redis_SpringBoot集成redis
大事件后端项目34_登录优化----redis_SpringBoot集成redis
大事件后端项目34_登录优化----redis_SpringBoot集成redis
|
5月前
|
Java 数据库连接 数据库
大事件后端项目05-----springboot整合mybatis
大事件后端项目05-----springboot整合mybatis
大事件后端项目05-----springboot整合mybatis
|
4月前
|
关系型数据库 MySQL Java
|
4月前
|
设计模式 存储 安全
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
62 1
|
4月前
|
Java Spring
如何在Java中实现事件驱动编程?
如何在Java中实现事件驱动编程?
下一篇
无影云桌面