springboot中ApplicationRunner执行顺序问题小结
作者:Muscleheng
SpringBoot中ApplicationRunner用于应用启动后执行初始化任务,通过@Order注解可控制多个Runner的执行顺序,数值越小越优先,下面就一起来了解一下
作用:ApplicationRunner是Spring Boot提供的一个接口,主要用于在Spring应用完全启动后执行特定的初始化任务或逻辑,例如数据库初始化、配置文件加载、缓存预热等。
具体用法这里就不做详细介绍了。
当我们有多个ApplicationRunner,并且需要严格控制执行顺序的时候,可以使用注解:
@Order(9) // 数值越小执行顺序越靠前
示例,我们写3个ApplicationRunner,加上@Order()注解,然后启动项目观察执行顺:
第一个:
@Slf4j @Order(1) // 数值越小执行顺序越靠前 @Component public class ARunner implements ApplicationRunner { /** * 项目启动成功后执行 * @param args */ @Override public void run(ApplicationArguments args) { log.info("项目启动成功,执行任务A"); try { }catch (Exception e){ log.error("执行错误.", e); } } }
第二个:
@Slf4j @Order(99) // 数值越小执行顺序越靠前 @Component public class BRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) { log.info("项目启动成功,执行任务B"); try { }catch (Exception e){ log.error("执行错误.", e); } } }
第三个:
@Slf4j @Order(9) // 数值越小执行顺序越靠前 @Component public class CRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) { log.info("项目启动成功,执行任务C"); try { }catch (Exception e){ log.error("执行错误.", e); } } }
执行结果:可以看到,执行顺序就是按照@Order()注解来执行的,数值越小执行顺序越靠前。
到此这篇关于springboot中ApplicationRunner执行顺序问题小结的文章就介绍到这了,更多相关springboot ApplicationRunner执行顺序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!