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