ApplicationRunner 类说明

在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为 CommandLineRunnerApplicationRunner他们的执行时机为容器启动完成的时候。

这两个接口中有一个 run方法,我们只需要实现这个方法即可。这两个接口的不同之处在于:ApplicationRunner中 run方法的参数为 ApplicationArguments,而CommandLineRunner接口中 run方法的参数为 String数组。目前我在项目中用的是ApplicationRunner。是这么实现的:args 是系统启动时传入的参数。

 1 package com.zzx.service.start;
 2 
 3 import org.slf4j.Logger;
 4 import org.slf4j.LoggerFactory;
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.boot.ApplicationArguments;
 7 import org.springframework.boot.ApplicationRunner;
 8 import org.springframework.stereotype.Component;
 9 
10 /**
11  * @ClassName: BootStart
12  * @Description: 系统入口
13  * @Author: zzx
14  * @Date: 2020/9/22 17:26
15  */
16 @Component
17 public class BootStart implements ApplicationRunner {
18     private static final Logger logger = LoggerFactory.getLogger(BootStart.class);
19 
20 
21     @Override
22     public void run(ApplicationArguments args) {
23         try {
24             logger.info("启动系统线程...");
25 
26             //创建线程池
27             ThreadFactory threadFactory = Executors.defaultThreadFactory();
28             ExecutorService executorService = new ThreadPoolExecutor(1,1,0L,
29                     TimeUnit.MILLISECONDS,new LinkedBlockingDeque<Runnable>(),threadFactory);
30 
31             //(() -> {}) lambda表达式
32             executorService.execute(() -> {
33                 
34             });
35         } catch (Exception e) {
36             logger.error("******初始化系统异常:", e);
37         }
38     }
39 }

 

posted @ 2020-11-14 17:53  Java程序员进阶  阅读(127)  评论(0编辑  收藏  举报