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

目录
相关文章
|
1月前
|
Java 开发者 Spring
java springboot监听事件和处理事件
通过上述步骤,开发者可以在Spring Boot项目中轻松实现事件的发布和监听。事件机制不仅解耦了业务逻辑,还提高了系统的可维护性和扩展性。掌握这一技术,可以显著提升开发效率和代码质量。
93 33
|
1月前
|
Java 开发者 Spring
java springboot监听事件和处理事件
通过上述步骤,开发者可以在Spring Boot项目中轻松实现事件的发布和监听。事件机制不仅解耦了业务逻辑,还提高了系统的可维护性和扩展性。掌握这一技术,可以显著提升开发效率和代码质量。
78 13
|
1月前
|
Java Spring
Java Spring Boot监听事件和处理事件
通过上述步骤,我们可以在Java Spring Boot应用中实现事件的发布和监听。事件驱动模型可以帮助我们实现组件间的松耦合,提升系统的可维护性和可扩展性。无论是处理业务逻辑还是系统事件,Spring Boot的事件机制都提供了强大的支持和灵活性。希望本文能为您的开发工作提供实用的指导和帮助。
103 15
|
1月前
|
Java 开发者 Spring
Java Springboot监听事件和处理事件
通过这些内容的详细介绍和实例解析,希望能帮助您深入理解Spring Boot中的事件机制,并在实际开发中灵活应用,提高系统的可维护性和扩展性。
63 7
|
3月前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
4月前
|
Java C#
Java的监听处理事件--小球移动案例
Java的监听处理事件--小球移动案例
30 0
|
4月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
103 1
|
26天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的留守儿童爱心网站设计与实现(计算机毕设项目实战+源码+文档)
博主是一位全网粉丝超过100万的CSDN特邀作者、博客专家,专注于Java、Python、PHP等技术领域。提供SpringBoot、Vue、HTML、Uniapp、PHP、Python、NodeJS、爬虫、数据可视化等技术服务,涵盖免费选题、功能设计、开题报告、论文辅导、答辩PPT等。系统采用SpringBoot后端框架和Vue前端框架,确保高效开发与良好用户体验。所有代码由博主亲自开发,并提供全程录音录屏讲解服务,保障学习效果。欢迎点赞、收藏、关注、评论,获取更多精品案例源码。
61 10
|
26天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的家政服务管理平台设计与实现(计算机毕设项目实战+源码+文档)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
46 8
|
26天前
|
JavaScript 搜索推荐 Java
基于SpringBoot+Vue实现的家乡特色推荐系统设计与实现(源码+文档+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
57 8