首页 文章资讯内容详情

springboot启动时执行任务CommandLineRunner

2026-06-01 4 花语

本文内容纲要:

#SpringBoot中CommandLineRunner的作用

平常开发中有可能需要实现在项目启动后执行的功能,SpringBoot提供的一种简单的实现方案就是添加一个model并实现CommandLineRunner接口,实现功能的代码放在实现的run方法中

#简单例子

```java

packageorg.springboot.sample.runner;

importorg.springframework.boot.CommandLineRunner;

importorg.springframework.stereotype.Component;

@Component

publicclassMyStartupRunnerimplementsCommandLineRunner{

@Override

publicvoidrun(String...args)throwsException{

System.out.println(">>>>>>>>>>>>>>>服务启动执行,执行加载数据等操作<<<<<<<<<<<<<");

}

}

```

#如果有多个类实现CommandLineRunner接口,如何保证顺序

SpringBoot在项目启动后会遍历所有实现CommandLineRunner的实体类并执行run方法,如果需要按照一定的顺序去执行,那么就需要在实体类上使用一个@Order注解(或者实现Order接口)来表明顺序

```

packageorg.springboot.sample.runner;

importorg.springframework.boot.CommandLineRunner;

importorg.springframework.core.annotation.Order;

importorg.springframework.stereotype.Component;

@Component

@Order(value=2)

publicclassMyStartupRunner1implementsCommandLineRunner{

@Override

publicvoidrun(String...args)throwsException{

System.out.println(">>>>>>>>>>>>>>>服务启动执行2222<<<<<<<<<<<<<");

}

}

```

```

packageorg.springboot.sample.runner;

importorg.springframework.boot.CommandLineRunner;

importorg.springframework.core.annotation.Order;

importorg.springframework.stereotype.Component;

@Component

@Order(value=1)

publicclassMyStartupRunner2implementsCommandLineRunner{

@Override

publicvoidrun(String...args)throwsException{

System.out.println(">>>>>>>>>>>>>>>服务启动执行111111<<<<<<<<<<<<<");

}

}

```

控制台显示

```

服务启动执行11111111<<<<<<<<<<<<<

服务启动执行22222222##标题##<<<<<<<<<<<<<

```

根据控制台结果可判断,@Order注解的执行优先级是按value值从小到大顺序。

本文内容总结:

原文链接:https://www.cnblogs.com/myblogs-miller/p/9046425.html