什么是CommandRunner
CommandRunner是springboot啟動完成時會調用的一個runner 啟動參數會傳遞到這個runner 我們能用來做一些初始化工作和緩存預熱等工作
ApplicationRunner VS CommandRunner?
這兩個Runner作用一樣 只是得到的啟動參數格式不一樣 前者是一個Argument對象 后者是參數字符串數組 功能更強大
使用方法
編寫一個Runner類實現CommandRunner接口 重寫run方法 runner被調用時run方法會被執行 Runner類需要注冊成一個組件被spring管理
@Component
public class CommandLineRunnerImpl implements CommandLineRunner {private static final Logger log = LoggerFactory.getLogger(CommandLineRunnerImpl.class);private Environment environment;public CommandLineRunnerImpl(Environment environment) {this.environment = environment;}@Overridepublic void run(String... args) throws Exception {log.info("command line args: {}", Arrays.toString(args)); // [--spring.profiles.active=prod, --server.port=9091]log.info("command line environment: {}", environment.getActiveProfiles()); // prodlog.info("command line environment: {}", environment.getProperty("server.port")); // 9091}
}
修改啟動的configuration 加入啟動參數:
啟動項目后 控制臺輸出:
除了從run方法參數獲取還可以通過environment對象的getProperty獲取