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