java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot ApplicationRunner执行顺序

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执行顺序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文