springbootrun方法什么时候扫描的配置类
SpringBootRun方法会在应用启动时扫描配置类。SpringBootRun方法郑蚂裂是一个静态方法,它可以接受一个参数,该参数是一个字符串数组,其中包含要传递给应用程序的参数。SpringBootRun方法会调用SpringApplication类的run方法,该方法会接受一个参数,该参数是一个配置类,它物携包含了应用程序所需的所有配置信息。在调用run方法之喊闭后,SpringBootRun方法会扫描该配置类,以确定应用程序需要加载哪些组件。一旦所有组件都被加载,应用程序就可以正常运行了。
如何在 springboot 启动之后 执行一段逻辑?
不知道 这个问题你思考过没???或者 实际业务场景中 有这种诉求没?
org.springframework.boot.CommandLineRunner 是 Spring Boot 提供的一个接口,当你实现该接口并将之注入 Spring IoC 容器后, Spring Boot 应用启动后就会执行其run方法。一个 Spring Boot 可以存在多个CommandLineRunner的实现,当存在多个时,你可以实现Ordered接口控制这些实现的执行顺序( Order 数值越大优先级越低 )。接下来我们来声明两个实现并指定顺序:
下面让我们通过代码实例 来看看 如何执行的。
首先构造两个类,并加入容器:
启动项目 查看打印日志 顺序~~~
可以看到项目启动之后,自动就执行了,刚好 满足了 我们的需求,容器启动之后自动帮我们调用,前提 类需要加入到容器中局慎悔并实现孝圆接口桐正。
下一节,我们来探讨 另外一种 更常用的 项目启动之后 需要执行的初始化逻辑的变种实现 ~
SpringBoot 在初始化之后执行某项操作的方法
在任意方法上加入 @PostConstruct ,例如
这种方法需要一个配置类,也就是加上了 @Configuration 注解
在返回某个类的方法上加入 @Bean 注解进行注入,其参数需带有 initMethod ,其值为想要执行初始化方法的名厅凳称,配置类例如
实际使岁岁用的类例如
该接口的定义扮雀旅如下
通过实现这个接口的 afterPropertiesSet 方法,来完成初始化操作,例如
构造方法 -- @PostConstruct -- InitializingBean接口 -- @Bean 注入的init-method
在大型系统里千万要注意顺序
SpringBoot 项目启动后执行代码
在开发的过程中渗困,有时需要在应用启动后自动进行一些操作, 比如:项目启动前初始化资源文件、初始化线程池、提前加载加密证书等等。稿喊纳下边介绍两个接口CommandLineRunner 和 ApplicationRunner 来满足我们的需求,它们会在spring Bean初始化之后SpringApplication run方法执行之前调用,如果需要指定执行顺序,可以使用键没@Order注解,值越小越先执行。
执行顺序:
ApplicationRunner
CommandLineRunner
执行结果
想springboot启动完成后执行某个方法
实现方法有2个。
一、ApplicationRunner
实现ApplicationRunner接口
打上 @Component + implements ApplicationRunner
二、CommandLineRunner
实现CommandLineRunner接口
打上 @Component + implements CommandLineRunner
SpringApplication的run方法猜纯会执行穗弊咐afterRefresh方法
afterRefresh会触发callRunners方法
callRunners方法会调卜槐用容器里面所有实现了ApplicationRunner、CommandLineRunner接口的方法