当前位置:首页 > 话题广场 > 攻略专题 > 游戏问答

关于如何初始化接口,你需要知道这些Spring Boot如何在启动时初始化资源?实现CommandLineRunner接口

在实际工作中,项目启动时需要执行初始化任务(如初始化数据库连接、Redis缓存等)的要求。

今天就给大家介绍 CommandLineRunner接口,帮助大家解决项目启动初始化资源操作。

CommandLineRunner 接口的 Component 会在所有 Spring Beans 都初始化之后,S() 之前执行,非常适合在应用程序启动之初进行一些数据初始化的工作。

一、CommandLineRunner 接口

Spring boot的CommandLineRunner接口主要用于实现在应用初始化后,去执行一段代码块逻辑,这段初始化代码在整个应用生命周期内只会执行一次。

1. 编写一个简单的Spring Boot应用

创建一个Spring Boot项目,实现一个简单的Spring Boot应用测试一下。在应用启动类中,添加2行控制台输出提示,方便了解CommandLineRunner的执行时间点。

应用启动类CommandLineRunnerApp:

package com.rickie.springboot; import org.; import org.; @SpringBootApplication public class CommandLineRunnerApp { public static void main( String[] args ) { Sy("开始启动服务 ..."); S, args); Sy("服务启动完成 ..."); } }

2. 创建类实现CommandLineRunner接口

接下来我们直接创建一个类Initializer 实现 CommandLineRunner 接口,并实现它的 run() 方法。

package com.rickie.springboot; import org.; import org.; @Component public class Initializer implements CommandLineRunner { @Override public void run(String... args) throws Exception { Sy("开始初始化 ..."); } }

3. 启动应用

启动应用,查看Console控制台输出信息。

如下图所示,重点看看其中标识1、2、3的地方。我们发现ini() 方法在S() 之前执行了,并输出了“开始初始化 ...”的信息。

二、如何使用CommandLineRunner接口?

我们可以用以下三种方式去使用CommandLineRunner接口:

1. 和@Component注解一起使用

就是上面示例代码。

2. 和@SpringBootApplication注解一起使用

更新应用启动类代码,如下所示:

package com.rickie.springboot; import org.; import org.; import org.; @SpringBootApplication public class CommandLineRunnerApp implements CommandLineRunner { public static void main( String[] args ) { Sy("开始启动服务 ..."); S, args); Sy("服务启动完成 ..."); } @Override public void run(String... args) throws Exception { Sy("开始初始化@SpringBootApplication ... "); } }

启动应用,Console控制台输出结果:

3. 声明一个实现了CommandLineRunner接口的Bean

这种方式和第一种方式比较类似,就是在SpringBootApplication里定义一个Bean,该Bean实现了CommandLineRunner接口。

package com.rickie.springboot; import org.; import org.; import org.; import org.; @SpringBootApplication public class CommandLineRunnerApp // implements CommandLineRunner { public static void main( String[] args ) { Sy("开始启动服务 ..."); S, args); Sy("服务启动完成 ..."); } // @Override // public void run(String... args) throws Exception { // Sy("开始初始化@SpringBootApplication ... "); // } @Bean public Initializer initializer() { return new Initializer(); } }

记得将之前创建的Initializer类的注解@Component 注释掉,作为一个普通的Java类。

三、run()方法中出现异常会导致应用启动终止

在实现CommandLineRunner接口时,run(String… args)方法内部如果抛异常的话,会直接导致应用启动失败,所以,一定要记得将危险的代码放在try-catch代码块里。

如下所示,模拟run() 方法出现异常,会导致spring boot应用启动终止。

四、@Order注解来标识执行顺序

一个应用可能存在多个CommandLineRunner接口实现类,如果我们想设置它们的执行顺序,可以使用 @Order实现。

用@Order注解去设置多个CommandLineRunner实现类的执行顺序。

启动应用,查看console 输出结果:

1.《关于如何初始化接口,你需要知道这些Spring Boot如何在启动时初始化资源?实现CommandLineRunner接口》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《关于如何初始化接口,你需要知道这些Spring Boot如何在启动时初始化资源?实现CommandLineRunner接口》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2085243.html

上一篇

我的世界主世界是不是玩腻了,mod进入安装教程

下一篇

12306身份信息待核验怎么办?终于找到答案了小编带你走进12306:身份核验状态为待核验或未通过怎么办?

关于如何初始化接口,你需要知道这些S7-300集成DP口之间GSD文件方式的DP主从通信(Step7)

关于如何初始化接口,你需要知道这些S7-300集成DP口之间GSD文件方式的DP主从通信(Step7)

如何初始化接口相关介绍,S7-300集成DP端口之间的GSD文件驱动DP主从通信(Step7) PROFIBUS-DP是一种通信标准,一些符合PROFIBUS-DP约定的第三方设备也可以作为SIMATIC master的从属...

如何初始化接口看这里!电脑提示windows通信端口初始化失败的解决方法

如何初始化接口看这里!电脑提示windows通信端口初始化失败的解决方法

如何初始化接口相关介绍,出现Windows系统通信端口初始化失败的消息怎么办?最近,很多用户询问了windows系统通信端口初始化失败的解决方法,我将分享如下。(大卫亚设)。 解决方法: 1、我们把电脑中的360安全卫士退出...