想springboot启动完成后执行某个方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了想springboot启动完成后执行某个方法相关的知识,希望对你有一定的参考价值。

参考技术A 实现方法有2个。
一、ApplicationRunner
实现ApplicationRunner接口
打上 @Component + implements ApplicationRunner

二、CommandLineRunner
实现CommandLineRunner接口
打上 @Component + implements CommandLineRunner

SpringApplication的run方法会执行afterRefresh方法

afterRefresh会触发callRunners方法

callRunners方法会调用容器里面所有实现了ApplicationRunner、CommandLineRunner接口的方法

SpringBoot启动后执行某个方法

参考技术A

在项目中,SpringBoot启动后,需要初始化一些业务,要在服务启动后自动执行,不用人去手动操作,即把一些业务放到某方法中,服务启动后可自动执行。总结了3种方法:

用起来和第一种差不多

PostConstruct是Java提供的注解:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。
通常我们会是在Spring框架中使用到@PostConstruct注解 该注解的方法在整个Bean初始化中的执行顺序:
Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)
使用时直接方法上面注解,但是会影响服务提供,比如这个方法要执行五分钟 这五分钟之内是无法提供服务的,这个方法是在服务初始化后之前运行, 所以 此方法运行不结束,服务就无法初始化, 在这过程路也无法提供服务。在业务中体验不如上面2种好。
如下:

以上是关于想springboot启动完成后执行某个方法的主要内容,如果未能解决你的问题,请参考以下文章

springboot框架在容器加载完成之后执行某个方法

springboot启动流程分析

SpringBoot 项目启动后执行代码

SpringBoot程序启动时执行初始化代码

当spring 容器初始化完成后执行某个方法

当spring 容器初始化完成后执行某个方法