SpringBoot 项目启动后执行代码

在开发的过程中,有时需要在应用启动后自动进行一些操作,比如:项目启动前初始化资源文件、初始化线程池、提前加载加密证书等等。下边介绍两个接口CommandLineRunner 和 ApplicationRunner 来满足我们的需求,它们会在spring Bean初始化之后SpringApplication run方法执行之前调用,如果需要指定执行顺序,可以使用@Order注解,值越小越先执行。

执行顺序:

  • 当@Order注解的值相等时,先执行ApplicationRunner,然后执行CommandLineRunner
  • 当@Order注解的值不相等时,谁小谁先执行
  • 当@Order注解的值为空或者未设置@Order注解,放到最后执行。先执行ApplicationRunner,然后执行CommandLineRunner
  • ApplicationRunner

    @Component@Order(1)public class MyApplicationRunner1 implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println(“MyApplicationRunner1”); }}@Component@Order(2)public class MyApplicationRunner2 implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println(“MyApplicationRunner2”); }}@Componentpublic class MyApplicationRunner3 implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println(“MyApplicationRunner3”); }}

    CommandLineRunner

    @Component@Order(1)public class MyCommandLineRunner1 implements CommandLineRunner { @Override public void run(String… args) throws Exception { System.out.println(“MyCommandLineRunner1”); }}@Component@Order(2)public class MyCommandLineRunner2 implements CommandLineRunner { @Override public void run(String… args) throws Exception { System.out.println(“MyCommandLineRunner2”); }}@Componentpublic class MyCommandLineRunner3 implements CommandLineRunner { @Override public void run(String… args) throws Exception { System.out.println(“MyCommandLineRunner3”); }}

    执行结果

    MyApplicationRunner1MyCommandLineRunner1MyApplicationRunner2MyCommandLineRunner2MyApplicationRunner3MyCommandLineRunner3

    郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
    (0)
    用户投稿
    上一篇 2022年6月27日
    下一篇 2022年6月27日

    相关推荐

    • 7月25日晚间影响十大个股的利好消息

      1、中科海讯:与海洋试点国家实验室、蓝谷管理局、国实集团签订战略合作协议。中科海讯公告,与海洋试点国家实验室、蓝谷管理局、国实集团签订战略合作协议,在水下安全领域进行战略合作。 2…

      2022年8月2日
    • 一文读懂Kernel同步机制的底层实现(超详细~)

      原子操作 通常我们代码中的a = a + 1这样的一行语句,翻译成汇编后蕴含着3条指令: ldr x0, &aadd x0,x0,#1str x0,&a 即 (1)…

      2022年6月20日
    • 斯里兰卡经济崩溃 2022年恐萎缩8%创纪录

      据外媒报道 斯里兰卡中央银行总裁威拉辛格今天表示,国内经济崩溃将使今年出现至少8%空前萎缩,但民众不久之后将可期盼,通货膨胀飞涨问题将有所缓解。 法新社报道,斯里兰卡510亿美元外…

      2022年8月19日
    • MVC 死了,接下来会发生什么?

      在本系列的开始部分,我们将看到像 React.js 这样的 UI 框架是如何引入一种替代方法,来取代使用 MVC 作为设计 Web 应用程序和 UI 的主要方法的。请继续阅读,了解…

      2022年6月28日
    • Surface Laptop Go2评测低成本商务本与前代相比硬件提升明显

      微软Surface系列长期以来都在致力于打造高品质的商务电脑产品,并且长期以来积累了大量的消费群体,无论是高端的Surface Pro,还是身材小巧的Surface Go,或是实用…

      2022年6月29日
    • Stm32 芯片启动和时钟系统

      1.芯片启动 首先stm32会根据启动方式(参考手册2.4节)从启动位置加载启动代码到内存中,之后开始执行启动代码,一般启动代码使用官方提供的即可 ——&#…

      2022年7月12日
    • 前端入门-JavaScript 操作符

      所谓操作符,就是用来操作数据值的符号,在JavaScript中包括算术操作符、位操作符、关系操作符和相等操作符。这些操作符可以操作所有类型的数据,比如字符串、数字、布尔值,甚至对象…

      2022年7月18日
    • 39岁艺人余苑绮病逝!父亲余天崩溃证实死讯:终于不用再痛苦了

      据台媒报道,资深艺人余天的女儿余苑绮于8月21日因病逝世,享年仅仅39岁。 面对一众媒体,父亲余天强忍悲痛受访,亲自证实了女儿的死讯。就在采访现场,余天在儿子的搀扶下走出病房,神情…

      2022年8月22日
    • 微型电脑的选择要遵循什么要求?如何从品牌选择微型小主机?

      电脑的发明以及投入实际使用具有跨时代的意义,人类从用脑计算过渡到机器运算,人类的工作得到了高速处理,奠定了科技时代的发展。所以电脑真的是一件非常伟大的电子产品,现如今,我们每个人生…

      2022年6月27日
    • 联机双人必玩游戏推荐,每个都好玩(下)

      #夏日生活打卡季##有什么游戏推荐一下# 游戏就要两个人才好玩,叫上你的恋人、闺蜜、兄弟来一场夏日游戏联机盛宴吧 4.星露谷物语 休闲模拟类,这个已经是经典之作了,和上面两个相比较…

      2022年8月2日

    联系我们

    联系邮箱:admin#wlmqw.com
    工作时间:周一至周五,10:30-18:30,节假日休息