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

目录
相关文章
|
5月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
458 8
|
12月前
|
Java 数据安全/隐私保护 微服务
微服务——SpringBoot使用归纳——Spring Boot中使用监听器——Spring Boot中自定义事件监听
本文介绍了在Spring Boot中实现自定义事件监听的完整流程。首先通过继承`ApplicationEvent`创建自定义事件,例如包含用户数据的`MyEvent`。接着,实现`ApplicationListener`接口构建监听器,用于捕获并处理事件。最后,在服务层通过`ApplicationContext`发布事件,触发监听器执行相应逻辑。文章结合微服务场景,展示了如何在微服务A处理完逻辑后通知微服务B,具有很强的实战意义。
626 0
|
12月前
|
缓存 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot中使用监听器——监听器介绍和使用
本文介绍了在Spring Boot中使用监听器的方法。首先讲解了Web监听器的概念,即通过监听特定事件(如ServletContext、HttpSession和ServletRequest的创建与销毁)实现监控和处理逻辑。接着详细说明了三种实际应用场景:1) 监听Servlet上下文对象以初始化缓存数据;2) 监听HTTP会话Session对象统计在线用户数;3) 监听客户端请求的Servlet Request对象获取访问信息。每种场景均配有代码示例,帮助开发者理解并应用监听器功能。
658 0
|
8月前
|
人工智能 安全 Java
Spring Boot 过滤器 拦截器 监听器
本文介绍了Spring Boot中的过滤器、拦截器和监听器的实现与应用。通过Filter接口和FilterRegistrationBean类,开发者可实现对请求和响应的数据过滤;使用HandlerInterceptor接口,可在控制器方法执行前后进行处理;利用各种监听器接口(如ServletRequestListener、HttpSessionListener等),可监听Web应用中的事件并作出响应。文章还提供了多个代码示例,帮助读者理解如何创建和配置这些组件,适用于构建更高效、安全和可控的Spring Boot应用程序。
777 0
|
11月前
|
JavaScript 前端开发 Java
【Java进阶】详解JavaScript事件
总的来说,JavaScript事件是JavaScript交互设计的核心,理解和掌握JavaScript事件对于编写高效、响应式的网页应用至关重要。
209 15
|
11月前
|
存储 机器学习/深度学习 监控
如何监控员工的电脑——基于滑动时间窗口的Java事件聚合算法实现探析​
在企业管理场景中,如何监控员工的电脑操作行为是一个涉及效率与合规性的重要课题。传统方法依赖日志采集或屏幕截图,但数据量庞大且实时性不足。本文提出一种基于滑动时间窗口的事件聚合算法,通过Java语言实现高效、低资源占用的监控逻辑,为如何监控员工的电脑提供一种轻量化解决方案。
365 3
|
Java 开发者 Spring
java springboot监听事件和处理事件
通过上述步骤,开发者可以在Spring Boot项目中轻松实现事件的发布和监听。事件机制不仅解耦了业务逻辑,还提高了系统的可维护性和扩展性。掌握这一技术,可以显著提升开发效率和代码质量。
381 33
|
Java 开发者 Spring
java springboot监听事件和处理事件
通过上述步骤,开发者可以在Spring Boot项目中轻松实现事件的发布和监听。事件机制不仅解耦了业务逻辑,还提高了系统的可维护性和扩展性。掌握这一技术,可以显著提升开发效率和代码质量。
471 13
|
Java Spring
Java Spring Boot监听事件和处理事件
通过上述步骤,我们可以在Java Spring Boot应用中实现事件的发布和监听。事件驱动模型可以帮助我们实现组件间的松耦合,提升系统的可维护性和可扩展性。无论是处理业务逻辑还是系统事件,Spring Boot的事件机制都提供了强大的支持和灵活性。希望本文能为您的开发工作提供实用的指导和帮助。
504 15
|
Java 开发者 Spring
Java Springboot监听事件和处理事件
通过这些内容的详细介绍和实例解析,希望能帮助您深入理解Spring Boot中的事件机制,并在实际开发中灵活应用,提高系统的可维护性和扩展性。
959 7

热门文章

最新文章