CommandLineRunner 和 ApplicationRunner 概述
CommandLineRunner 和 ApplicationRunner 的作用类似, 都可以在 Spring 容器初始化之后执行某些操作。比较适用于某些复杂的 Bean 加载完成之后执行一些操作。例如 Feign 调用。
相同点
- 都可以获取到启动时指定的外部参数。
- 主逻辑方法名称都是
run。 - 在
run方法内部抛出异常时, 应用都将无法正常启动。
不同点
run方法的参数不一致, 一个是String[]数组, 一个是ApplicationArguments。
执行顺序
- 在没有指定加载顺序
@Order时或@Order值一致时, 先执行ApplicationRunner。 - 如果指定了加载顺序
@Order, 则按照@Order的顺序进行执行。