Spring Boot 如何解决项目启动时初始化资源 ╰+哭是因爲堅強的太久メ 2022-02-01 07:27 287阅读 0赞 在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资源操作。 这个神器就是 CommandLineRunner,CommandLineRunner 接口的 Component 会在所有 Spring Beans 都初始化之后,SpringApplication.run() 之前执行,非常适合在应用程序启动之初进行一些数据初始化的工作。 接下来我们就运用案例测试它如何使用,在测试之前在启动类加两行打印提示,方便我们识别 CommandLineRunner 的执行时机。 @SpringBootApplication public class CommandLineRunnerApplication \{ public static void main(String\[\] args) \{ System.out.println(“The service to start.”); SpringApplication.run(CommandLineRunnerApplication.class, args); System.out.println(“The service has started.”); \} \} 接下来我们直接创建一个类继承 CommandLineRunner ,并实现它的 run() 方法。 @Component public class Runner implements CommandLineRunner \{ @Override public void run(String… args) throws Exception \{ System.out.println(“The Runner start to initialize …”); \} \} 我们在 run() 方法中打印了一些参数来看出它的执行时机。完成之后启动项目进行测试: … The service to start. . \_\_\_\_ \_ \_\_ \_ \_ /\\ / *’ \_\_ \_ () \_\_ \_\_ \_ \\ \\ \\ ( ( )\_*\_ | '\_ | '*| | ’* / *\` | \\ \\ \\ \\/ )| |)| | | | | || (| | ) ) ) ) ’ |**| .\_\_|| |*|*| |*\_\_, | / / / / =|\_|======|*/=///*/ :: Spring Boot :: (v2.0.0.RELEASE) … 2018-04-21 22:21:34.706 INFO 27016 — \[ main\] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ‘’ 2018-04-21 22:21:34.710 INFO 27016 — \[ main\] com.neo.CommandLineRunnerApplication : Started CommandLineRunnerApplication in 3.796 seconds (JVM running for 5.128) The Runner start to initialize … The service has started. 根据控制台的打印信息我们可以看出 CommandLineRunner 中的方法会在 Spring Boot 容器加载之后执行,执行完成后项目启动完成。 如果我们在启动容器的时候需要初始化很多资源,并且初始化资源相互之间有序,那如何保证不同的 CommandLineRunner 的执行顺序呢?Spring Boot 也给出了解决方案。那就是使用 @Order 注解。 我们创建两个 CommandLineRunner 的实现类来进行测试: 第一个实现类: @Component @Order(1) public class OrderRunner1 implements CommandLineRunner \{ @Override public void run(String… args) throws Exception \{ System.out.println(“The OrderRunner1 start to initialize …”); \} \} 第二个实现类: @Component @Order(2) public class OrderRunner2 implements CommandLineRunner \{ @Override public void run(String… args) throws Exception \{ System.out.println(“The OrderRunner2 start to initialize …”); \} \} 添加完成之后重新启动,观察执行顺序: … The service to start. . \_\_\_\_ \_ \_\_ \_ \_ /\\ / *’ \_\_ \_ () \_\_ \_\_ \_ \\ \\ \\ ( ( )\_*\_ | '\_ | '*| | ’* / *\` | \\ \\ \\ \\/ )| |)| | | | | || (| | ) ) ) ) ’ |**| .\_\_|| |*|*| |*\_\_, | / / / / =|\_|======|*/=///*/ :: Spring Boot :: (v2.0.0.RELEASE) … 2018-04-21 22:21:34.706 INFO 27016 — \[ main\] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ‘’ 2018-04-21 22:21:34.710 INFO 27016 — \[ main\] com.neo.CommandLineRunnerApplication : Started CommandLineRunnerApplication in 3.796 seconds (JVM running for 5.128) The OrderRunner1 start to initialize … The OrderRunner2 start to initialize … The Runner start to initialize … The service has started. 通过控制台的输出我们发现,添加 @Order 注解的实现类最先执行,并且@Order()里面的值越小启动越早。 在实践中,使用ApplicationRunner也可以达到相同的目的,两着差别不大。看来使用 Spring Boot 解决初始化资源的问题非常简单。 。
相关 Spring Boot项目初始化报错解决教程 Spring Boot项目的初始化报错,一般可以通过以下几个步骤进行解决: 1. **错误信息分析**: 首先,你需要详细查看错误信息。这通常会在控制台或者日志文件中找 忘是亡心i/ 2024年09月25日 14:03/ 0 赞/ 61 阅读
相关 Spring框架初始化问题:新项目如何正确配置Spring Boot启动项? 在Spring Boot项目中,正确的配置Spring Boot的启动项通常涉及到以下几个步骤: 1. **创建主类**: Spring Boot默认使用`Applic £神魔★判官ぃ/ 2024年09月10日 05:51/ 0 赞/ 51 阅读
相关 Spring Boot实现第一次启动时自动初始化数据库 Spring Boot实现第一次启动时自动初始化数据库 在现在的后端开发中,只要是运用联系型数据库,信任SSM架构(Spring Boot + MyBatis)已经成为首 朴灿烈づ我的快乐病毒、/ 2024年02月05日 19:20/ 0 赞/ 34 阅读
相关 Spring Boot 如何解决项目启动时初始化资源 在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。今天就给大家介绍一个 Spring Boot 神器,专门帮助 小咪咪/ 2022年04月04日 20:38/ 0 赞/ 274 阅读
相关 springcloud 配置服务启动时初始化资源 [https://blog.csdn.net/u011011153/article/details/80250936][https_blog.csdn.net_u0110111 浅浅的花香味﹌/ 2022年03月27日 02:36/ 0 赞/ 353 阅读
相关 Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源 在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。今天就给大家介绍一个 Spring Boot 神器,专门帮助 爱被打了一巴掌/ 2022年03月25日 01:38/ 0 赞/ 235 阅读
相关 spring boot 设置启动时初始化DispatcherServlet 在spring boot load-on-startup默认值是-1,项目启动时,默认不会初始化DispatcherServlet,也就是不会调用Servlet接口的init( 我会带着你远行/ 2022年03月21日 16:05/ 0 赞/ 614 阅读
相关 Spring Boot 如何解决项目启动时初始化资源 在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。今天就给大家介绍一个 Spring Boot 神器,专门帮助 ╰+哭是因爲堅強的太久メ/ 2022年02月01日 07:27/ 0 赞/ 288 阅读
相关 Spring Boot 2.0(七):Spring Boot 如何解决项目启动时初始化资源 转载自“纯洁的微笑”:[https://blog.csdn.net/ityouknow/article/details/80193361][https_blog.csdn.ne 太过爱你忘了你带给我的痛/ 2021年12月15日 22:47/ 0 赞/ 229 阅读
还没有评论,来说两句吧...