【SpringBoot】给你的 CommandLineRunner 排个序
本文演示如何给 SpringBoot 工程中的多个 CommandLineRunner 排序,实现按规定顺序执行的效果。
首先假设有以下 3 个 CommandLineRunner 的实现类:
我们想要这 3 个 runner 按照 3 -> 2 -> 1 的顺序执行,该怎么做呢?
根据 CommnadLineRunner 的源码注释(... can be ordered using the {@link Ordered} interface or {@link Order @Order} annotation. ...
)的描述可知,我们可以通过给这三个 runner 类上添加 @Order
注解并指定我们想要的执行顺序来实现:
而真正在背后干活的是 SpringApplication#callRunners()
方法中的 AnnotationAwareOrderComparator.sort(runners);
:
最后还是那句话,多看源码。
版权声明: 本文为 InfoQ 作者【遇见】的原创文章。
原文链接:【http://xie.infoq.cn/article/c6afa6d4070e7ef06c6f83347】。文章转载请联系作者。
评论