1. 使用场景:在一些业务场景中,当容器初始化完成之后,需要处理一些操作,比如一些数据的加载、初始化缓存、特定任务的注册、开启线程或程序来干某些事情等等。

2. 使用步骤:

  A. 监听类实现ApplicationListener接口 ;

  B. 将监听类添加到SpringApplication实例(两种方式:application.properties配置、java启动配置)。

3. 支持的事件类型:

  A. ApplicationStartedEvent —— spring boot启动开始时执行的事件;

  B. ApplicationEnvironmentPreparedEvent —— spring boot 对应Enviroment已经准备完毕,但此时上下文context还没有创建;

  C. ApplicationPreparedEvent —— spring boot上下文context创建完成,但此时spring中的bean是没有完全加载完成的;

  D. ApplicationFailedEvent —— spring boot启动异常时执行事件 。

4.Spring内置的事件:

  A.  ContextRefreshedEvent —— ApplicationContext容器初始化或者刷新时触发该事件;

  B.  ContextStartedEvent —— 当使用ConfigurableApplicationContext接口的start()方法启动ApplicationContext容器时触发该事件;

  C. ContextClosedEvent —— 当使用ConfigurableApplicationContext接口的close()方法关闭ApplicationContext容器时触发该事件;

  D. ContextStopedEvent —— 当使用ConfigurableApplicationContext接口的stop()方法停止ApplicationContext容器时触发该事件。

5.举例说明:

package com.ruhuanxingyun;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.nsac.business.listener.ApplicationStartup;@SpringBootApplication
public class SpApp {public static void main(String[] args) {SpringApplication springApplication = new SpringApplication(SpApp.class);springApplication.addListeners(new ApplicationStartup());springApplication.run(args);}
}

package com.nsac.ruhuanxingyun;import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;public class ApplicationStartup implements ApplicationListener<ContextRefreshedEvent> {@Overridepublic void onApplicationEvent(ContextRefreshedEvent event) {ApplicationContext ac = event.getApplicationContext();StepExecutor StepExecutor = new StepExecutor(ac.getEnvironment().getProperty("project-id"), ac.getBean("businessSingleJedisPool",redis.clients.jedis.JedisPool.class),                                 ac.getBean("redisCluster", redis.clients.jedis.JedisCluster.class));Thread thread = new Thread(StepExecutor);thread.start();}}

可参考:https://blog.csdn.net/liaokailin/article/details/48186331

转载于:https://www.cnblogs.com/ruhuanxingyun/p/10669990.html

SpringBoot 自定义监听器(Listener)相关推荐

  1. java web自定义监听器_Android自定义监听器Listener(自定义Java Callback回调事件)

    Callback回调事件介绍 Java或Android中创建异步回调最普遍的做法就是使用listener监听器或者observer观察者模式来解决,listener回调事件通常用于实现一个代码去监听另 ...

  2. 利用监听器(Listener)实现用户访问记录

    自定义监听器(Listener) 1. 当用户访问网站时,先判断用户的session是否为new: 2. 如果该session为new,获取用户的真实IP,查询数据库对应的今天访问信息是否有该IP: ...

  3. SpringBoot定义三大组件Servlet,过滤器Filter,监听器Listener

    SpringBoot定义三大组件Servlet,过滤器Filter,监听器Listener 1.定义组件的配置类: com.example.mybatis2018.config.MyServletCo ...

  4. 监听器——Listener(简述、自定义监听器) 略,过滤器与拦截器

    文章目录 监听器 自定义监听器 过滤器与拦截器 监听器 略,不怎么使用了. 见名知意,比如你上课玩手机,亲爱的班主任静悄悄地出现在你身后.你就是"被监听的对象",班主任就" ...

  5. SpringBoot ApplicationListener监听器的使用-监听ApplicationReadyEvent事件

    SpringBoot监听器 ApplicationContext事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListener接口,可以实现Applic ...

  6. SpringBoot源码初学者(二):SpringBoot事件监听器

    ps:真正适合阅读源码的新手来看的SpringBoot源码讲解,如果你真的想读懂SpringBoot源码,可以按照以下推荐的方式来阅读文章 打开ide,打开SpringBoot源码,跟着文章一起写注释 ...

  7. springboot之监听器

    springboot中使用监听器 文章目录 springboot中使用监听器 一.监听器概述 二.监听Servlet上下文对象 三.监听Http会话Session对象 监听客户端请求Servlet R ...

  8. android 实现自定义监听接口,Android在自定义类中实现自定义监听器方式

    Android在自定义类中实现自定义监听器方式 发布时间:2020-08-31 06:19:39 来源:脚本之家 阅读:203 作者:Simon_Qi 监听器可以说是Android开发中最常用的东西之 ...

  9. 一篇文章教你学会使用SpringBatch 监听器Listener

    文章目录 一.SpringBatch监听器 二.搭建SpringBatch开发环境 三.监听器详细介绍 1.JobExecutionListener 2.StepExecutionListener 3 ...

最新文章

  1. mysql with语句_MySQL列举数据库(SHOW DATABASES语句)
  2. eeglab教程系列(2)-加载、显示数据
  3. 图像的打开、修改、显示和保存示例(OpenCV 2.0)
  4. 蚂蚁金服CTO程立:从Fintech到Techfin,未来十年有九大重要挑
  5. java生成数据插入hbase_hbase实战之javaAPI插入数据
  6. 小白的奇幻数学课堂(part3)--你能把一张纸对折7次以上吗
  7. js进阶 12-5 jquery中表单事件如何使用
  8. BZOJ 2286 消耗战 (虚树+树形DP)
  9. 修改项目生成Gemfile的模板
  10. python怎么背景实现循环_在Python的一段程序中如何使用多次事件循环详解
  11. freebsd linux性能,为什么有人会选择FreeBSD而不是Linux?[关闭]
  12. c语言航空订票系统程序设计,C语言航空订票系统
  13. java 分析图片文字大小时,剔除部分异常数据,思路梳理(格拉布斯准则)
  14. windows注册表操作——备份,还原注册表,清除注册表卸载残留信息
  15. 公司版苹果开发者账号注册申请流程
  16. 解决Intel Edison 已连接Wifi但无法上网问题
  17. 上亿只“小白鼠”有救了,AI可检测化学物质甚至还更准确
  18. c语言kbhit函数头文件,c - 有没有办法替换标准C中的kbhit()和getch()函数? - 堆栈内存溢出...
  19. android-17手机,安卓手机好评排行:魅族17第四,小米10至尊第六,第一名意料之中...
  20. Serenity Screenplay模式

热门文章

  1. linux 权限加号是,请教:drwxrwxr-x   什么权限后面有个加号,代表什么意思
  2. idea package放在什么位置_NBA现役球员大排名,你会把20岁的东契奇放在什么位置?...
  3. 计算机维修工具和仪器,浮球液位计介绍微型计算机常用维修工具和仪器
  4. Linux 3g上网卡 拨号,Ubuntu 3G上网卡拨号过程分析
  5. Python基础知识 D9
  6. 基于深度卷积神经网络的玉米病害实时识别检测系统
  7. 常见面试算法:Logistic回归、树回归
  8. 2017年网易游戏数据挖掘/机器学习实习生笔试
  9. linux mysql恢复数据_Mysql数据恢复和备份
  10. 计算机专业毕业设计中期考核表,研究生中期考核表导师评语