点击返回目录

本章节不是太重要,但你要知道有这个东西存在。

销毁时执行:

继承自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启动和关闭时的事件操作:相关推荐

  1. springboot启动和关闭时的事件操作

    销毁时执行: 继承自DisposableBean,并将其注册为bean即可. import org.springframework.beans.factory.DisposableBean; impo ...

  2. 3704对象关闭时_运行时出现了“对象关闭时不允许操作”实时错误3704,请问大家怎么改呢?...

    运行时出现了"对象关闭时不允许操作"实时错误3704,请问大家怎么改呢? Option Explicit'这是公共模块 Public adocon As ADODB.Connect ...

  3. iframe关闭时触发事件_超详细的mysql数据库事件--定时任务介绍及日常管理

    概述 由于最近在做某些日志表的清理工作,会用到定时任务,所以这里也简单介绍一下mysql如何用事件来实现定时任务. 后面会介绍两个日志表清理实现方案,一种是传统的定时delete,另一种会稍微复杂点, ...

  4. UAC打开关闭时提权操作的异同

    UAC开启时: 登录的是超级管理员Administrator 提权的时候不会弹出UAC提示窗口. 登录的是管理员(非超级管理员Administrator),在启动设置了requireAdministr ...

  5. java设置窗体关闭时执行某些操作

    最近在做一个项目,要求窗体在关闭时执行某些善后操作,这里通过继承WindowAdapter,重写windowClosing方法,并且为窗体添加addWindowListener监听程序,案例如下: p ...

  6. springboot 启动和关闭事件

    参考博客:https://blog.csdn.net/lianghecai52171314/article/details/106648082 启动事件 @Component public class ...

  7. Bootstrap- Modal对话框如何在关闭时触发事件

    下表列出了模态框中要用到事件.这些事件可在函数中当钩子使用. 事件 描述 实例 show.bs.modal 在调用 show 方法后触发. $('#identifier').on('show.bs.m ...

  8. vba odbc 3704 mysql_vba编程 3704报错 对象关闭时不允许操作

    PrivateSubCommandButton1_Click()DimstrconntAsStringstrconnt=""Setconnt=NewADODB.Connection ...

  9. 3704对象关闭时_求助:VB运行时错误\3704\,对象关闭时,不允许操作

    这是修改用户密码的代码:PrivateSubCommand1_Click()DimRsAsNewADODB.RecordsetDimsqlAsStringDimsql2AsStringIfText1. ...

最新文章

  1. 低代码、无代码?深度解读硅谷新趋势
  2. 56.4 AP!超越YOLOv4,更快更强的CenterNet2来了!
  3. WPF 提供了以下关键帧动画类[msdn]
  4. linux命令录制,怎样在Linux上录制你的终端操作及回放
  5. C#基础_值类型引用类型(十一)
  6. [转]2022 Flutter 宣布发布 Windows 正式版
  7. 阿帕奇跨域_阿帕奇齿轮泵
  8. doc.update
  9. pb数据窗口怎么调用视图_大数据架构如何做到流批一体?
  10. LOJ2420「NOIP2015」神奇的幻方
  11. excel替换快捷键_18个Ctrl系列快捷键,简单易上手,且实用
  12. 接口先决条件失败412
  13. 室内地图导航shopcloud
  14. 华氏温度与摄氏温度用C语言的实现方法
  15. SA上传吞吐率优化经验总结
  16. Unity Shader 皮肤水滴效果
  17. Visual Studio 2013 下载地址 V12各种版本官方下载网址
  18. Linux下重启磁盘盘符会变,linux系统 重启盘符错乱问题
  19. android 打开手机存储空间不足,手机存储空间不足?清清缓存吧(Android手机)
  20. php 读取文件并显示出来,读取文本文件并显示在网页_PHP教程

热门文章

  1. 时间格式转换 Mon Aug 17 2020 16:29:29 GMT+0800 (中国标准时间)
  2. Linux下查看某一进程所占用内存的方法 -- from cnblogser 小得盈满
  3. const int a; int const a; const int *a; int * const a; int const * a const; 之间的区别
  4. java swt 双屏_微星主板B350M接双屏显示器,显卡接的显示器有反应,主板接的显示器没放映...
  5. SMR磁盘学习3---caveat-scriptor
  6. 如何配合RestTemplate优雅的记录请求以及返回的信息
  7. 第十一章 认识与学习BASH【鸟哥linux私房菜学习笔记】
  8. docker删除镜像时报错解决办法
  9. 堆在计算机中的作用,堆(数据结构)_百度百科
  10. 杭哥试用过的精品软件推荐:毛笔字生成软件(ougishi) 4.00 书法 唐宋八大家