springboot启动和关闭时的事件操作:
点击返回目录
本章节不是太重要,但你要知道有这个东西存在。
销毁时执行:
继承自DisposableBean,并将其注册为bean即可.
import org.springframework.beans.factory.DisposableBean;
import org.springframework.stereotype.Component;
/*** 结束的时候执行* @author dmw** 2019年4月15日*/
@Component
public class MyDisposableBean implements DisposableBean{@Overridepublic void destroy() throws Exception {System.out.println("结束");}}
启动后执行:
其有两种方法:
1.实现自ApplicationRunner
@Component
public class MyApplicationRunner1 implements ApplicationRunner{@Overridepublic void run(ApplicationArguments args) throws Exception {}}
2.实现自CommandLineRunner
@Component
public class MyCommandLineRunner1 implements CommandLineRunner{@Overridepublic void run(String... args) throws Exception {} }
它们两个非常相似,区别就在于ApplicationRunner的参数是spring的参数,CommandLineRunner的参数是命令行参数。如果没有什么特别的要求,用哪个都行。
执行顺序的处理:
无论是销毁还是启动,有时候我们都希望他们能够按照我们想要的顺序执行。
这里就需要一个注解了@Order
如下:
@Order(0)
@Component
public class MyCommandLineRunner1 implements CommandLineRunner{...@Order(1)
@Component
public class MyApplicationRunner1 implements ApplicationRunner{...@Order(-1)
@Component
public class MyApplicationRunner2 implements ApplicationRunner{...
执行顺序:MyApplicationRunner2 》MyCommandLineRunner1 》MyApplicationRunner1
@Order里的值最小是Integer.min,最大是Integr.max,越小顺序越前。
同样的,如果有多个销毁的事件,想要顺序也可以添加@Order
其他启动事件:
启动事件分为两种,一种是springboot启动过程中监听事件,一种是springboot启动成功后立即执行的事件.
我们刚刚讲的是启动成功后执行的。
现在我们来讲启动过程中的监听事件,尽管这个你基本用不到,但是可以了解下。
启动中共有6个事件如下:
ApplicationStartingEvent是在一个运行的开始,但任何处理之前被发送,除了听众和初始化的注册。
ApplicationEnvironmentPreparedEvent当被发送Environment到中已知的上下文中使用,但是在创建上下文之前。
ApplicationPreparedEvent刷新开始前,刚刚发,但之后的bean定义已经被加载。
ApplicationStartedEvent上下文已被刷新后发送,但是任何应用程序和命令行亚军都被调用前。
ApplicationReadyEvent任何应用程序和命令行亚军被呼叫后发送。它表示应用程序已准备好为请求提供服务。
ApplicationFailedEvent如果在启动时异常发送。
怎么使用呢?
写个 ApplicationStartingEvent事件吧
public class MyApplicationStartingEvent implements ApplicationListener<ApplicationStartingEvent>{@Overridepublic void onApplicationEvent(ApplicationStartingEvent event) {System.out.println("=================启动========");}}
然后在applicationClass里注册即可
@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication application = new SpringApplication(App.class);application.addListeners(new MyApplicationStartingEvent());application.run(args);}
}
springboot启动和关闭时的事件操作:相关推荐
- springboot启动和关闭时的事件操作
销毁时执行: 继承自DisposableBean,并将其注册为bean即可. import org.springframework.beans.factory.DisposableBean; impo ...
- 3704对象关闭时_运行时出现了“对象关闭时不允许操作”实时错误3704,请问大家怎么改呢?...
运行时出现了"对象关闭时不允许操作"实时错误3704,请问大家怎么改呢? Option Explicit'这是公共模块 Public adocon As ADODB.Connect ...
- iframe关闭时触发事件_超详细的mysql数据库事件--定时任务介绍及日常管理
概述 由于最近在做某些日志表的清理工作,会用到定时任务,所以这里也简单介绍一下mysql如何用事件来实现定时任务. 后面会介绍两个日志表清理实现方案,一种是传统的定时delete,另一种会稍微复杂点, ...
- UAC打开关闭时提权操作的异同
UAC开启时: 登录的是超级管理员Administrator 提权的时候不会弹出UAC提示窗口. 登录的是管理员(非超级管理员Administrator),在启动设置了requireAdministr ...
- java设置窗体关闭时执行某些操作
最近在做一个项目,要求窗体在关闭时执行某些善后操作,这里通过继承WindowAdapter,重写windowClosing方法,并且为窗体添加addWindowListener监听程序,案例如下: p ...
- springboot 启动和关闭事件
参考博客:https://blog.csdn.net/lianghecai52171314/article/details/106648082 启动事件 @Component public class ...
- Bootstrap- Modal对话框如何在关闭时触发事件
下表列出了模态框中要用到事件.这些事件可在函数中当钩子使用. 事件 描述 实例 show.bs.modal 在调用 show 方法后触发. $('#identifier').on('show.bs.m ...
- vba odbc 3704 mysql_vba编程 3704报错 对象关闭时不允许操作
PrivateSubCommandButton1_Click()DimstrconntAsStringstrconnt=""Setconnt=NewADODB.Connection ...
- 3704对象关闭时_求助:VB运行时错误\3704\,对象关闭时,不允许操作
这是修改用户密码的代码:PrivateSubCommand1_Click()DimRsAsNewADODB.RecordsetDimsqlAsStringDimsql2AsStringIfText1. ...
最新文章
- 低代码、无代码?深度解读硅谷新趋势
- 56.4 AP!超越YOLOv4,更快更强的CenterNet2来了!
- WPF 提供了以下关键帧动画类[msdn]
- linux命令录制,怎样在Linux上录制你的终端操作及回放
- C#基础_值类型引用类型(十一)
- [转]2022 Flutter 宣布发布 Windows 正式版
- 阿帕奇跨域_阿帕奇齿轮泵
- doc.update
- pb数据窗口怎么调用视图_大数据架构如何做到流批一体?
- LOJ2420「NOIP2015」神奇的幻方
- excel替换快捷键_18个Ctrl系列快捷键,简单易上手,且实用
- 接口先决条件失败412
- 室内地图导航shopcloud
- 华氏温度与摄氏温度用C语言的实现方法
- SA上传吞吐率优化经验总结
- Unity Shader 皮肤水滴效果
- Visual Studio 2013 下载地址 V12各种版本官方下载网址
- Linux下重启磁盘盘符会变,linux系统 重启盘符错乱问题
- android 打开手机存储空间不足,手机存储空间不足?清清缓存吧(Android手机)
- php 读取文件并显示出来,读取文本文件并显示在网页_PHP教程
热门文章
- 时间格式转换 Mon Aug 17 2020 16:29:29 GMT+0800 (中国标准时间)
- Linux下查看某一进程所占用内存的方法 -- from cnblogser 小得盈满
- const int a; int const a; const int *a; int * const a; int const * a const; 之间的区别
- java swt 双屏_微星主板B350M接双屏显示器,显卡接的显示器有反应,主板接的显示器没放映...
- SMR磁盘学习3---caveat-scriptor
- 如何配合RestTemplate优雅的记录请求以及返回的信息
- 第十一章 认识与学习BASH【鸟哥linux私房菜学习笔记】
- docker删除镜像时报错解决办法
- 堆在计算机中的作用,堆(数据结构)_百度百科
- 杭哥试用过的精品软件推荐:毛笔字生成软件(ougishi) 4.00 书法 唐宋八大家