springBoot的事件机制GenericApplicationListener用法解析

 更新时间:2019年09月03日 09:55:05   作者:技术-刘腾飞  
这篇文章主要介绍了springBoot的事件机制GenericApplicationListener用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值的相关资料

什么是ApplicationContext?

它是Spring的核心,Context我们通常解释为上下文环境,但是理解成容器会更好些。 ApplicationContext则是应用的容器。
Spring把Bean(object)放在容器中,需要用就通过get方法取出来。

ApplicationEvent

  • 是个抽象类,里面只有一个构造函数和一个长整型的timestamp。
  • springboot的event的类型:
    • ApplicationStartingEvent
    • ApplicationEnvironmentPreparedEvent
    • ApplicationContextInitializedEvent
    • ApplicationPreparedEvent
    • ContextRefreshedEvent
    • ServletWebServerInitializedEvent
    • ApplicationStartedEvent
    • ApplicationReadyEvent

ApplicationListener

是一个接口,里面只有一个onApplicationEvent方法。所以自己的类在实现该接口的时候,要实现该方法。

ApplicationListener的封装类

  • GenericApplicationListener
  • GenericApplicationListenerAdapter
  • SmartApplicationListener

关系

如果在上下文中部署一个实现了ApplicationListener接口的bean,那么每当在一个ApplicationEvent发布到 ApplicationContext时,这个bean得到通知。其实这就是标准的Oberver设计模式。

注意

要配置META-INF/spring.factories文件,并在文件中实现

使用

// 第一种方式
public class AiInfluxdbApplicationListener implements GenericApplicationListener {
  @Override
  public int getOrder() {
    return Ordered.LOWEST_PRECEDENCE;
  }
  @Override
  public boolean supportsEventType(ResolvableType eventType) {
    return ApplicationReadyEvent.class.isAssignableFrom(eventType.getRawClass());
  }
  @Override
  public void onApplicationEvent(ApplicationEvent event) {
    System.out.print("here is ApplicationReadyEvent");
  }
}
//第二种方式
public class ConfigApplicationListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered {
  @Override
  public int getOrder() {
    return HIGHEST_PRECEDENCE;
  }
  @Override
  public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {

  }
}
//META-INF/spring.factories文件定义
org.springframework.context.ApplicationListener=\
com.demotest.core.ApplicationStartListener

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Intellij IDEA下Spring Boot热切换配置

    Intellij IDEA下Spring Boot热切换配置

    这篇文章主要介绍了Intellij IDEA下Spring Boot热切换配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Java function函数式接口的使用方法与实例

    Java function函数式接口的使用方法与实例

    这篇文章主要介绍了Java function函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感与艺术的抽象融为一体,悄然重构了开发者对代码之美的认知,需要的朋友可以参考下
    2025-02-02
  • 如何使用spring gateway微服务网关(基本用法)

    如何使用spring gateway微服务网关(基本用法)

    本文介绍spring gateway的使用,包括配置文件的使用和调试跟踪,让大家了解spring gateway的基本用法,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • Springboot整合RabbitMq测试TTL的方法详解

    Springboot整合RabbitMq测试TTL的方法详解

    这篇文章主要介绍了Springboot整合RabbitMq测试TTL的设置,设置TTL一般由两种设置方法,设置整个队列的过期时间另一种设置单个消息的过期时间,通过示例图文相结合给大家介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • JavaWeb中JavaMail创建邮件和发送邮件

    JavaWeb中JavaMail创建邮件和发送邮件

    这篇文章主要介绍了JavaWeb中JavaMail创建邮件和发送邮件,较为详细的分析了JavaMail发送邮件的用法,是非常实用的技巧,需要的朋友可以参考下
    2015-12-12
  • sqlserver和java将resultSet中的记录转换为学生对象

    sqlserver和java将resultSet中的记录转换为学生对象

    这篇文章主要介绍了如何利用sqlserver和java将resultSet中的记录转换为学生对象,附有超详细的代码,需要的朋友可以参考一下,希望对你有所帮助
    2021-12-12
  • Java对XML文件增删改查操作示例

    Java对XML文件增删改查操作示例

    这篇文章主要介绍了Java对XML文件增删改查操作,结合完整实例形式分析了java针对xml格式数据的常见读写、增删改查等操作技巧,需要的朋友可以参考下
    2018-12-12
  • java不解压直接读取压缩包中文件的实现方法

    java不解压直接读取压缩包中文件的实现方法

    这篇文章主要介绍了java不解压直接读取压缩包中文件的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 浅谈抛出异常和捕获异常的一些区别

    浅谈抛出异常和捕获异常的一些区别

    这篇文章主要介绍了抛出异常和捕获异常的一些区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 使用Java如何将图片转成Base64编码,并压缩至40k

    使用Java如何将图片转成Base64编码,并压缩至40k

    这篇文章主要介绍了使用Java如何将图片转成Base64编码,并压缩至40k问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06

最新评论