当前位置: 首页 > news >正文

Springboot中CommandLineRunner的用法以及执行顺序的控制

`CommandLineRunner` 是 Spring Boot 提供的一个接口,用于在 Spring Boot 应用程序启动后执行一些特定的任务或逻辑。当应用程序启动时,`CommandLineRunner` 接口的实现类中的 `run` 方法会被调用,可以在这个方法中添加需要在应用程序启动后立即执行的逻辑。

一般来说,`CommandLineRunner` 接口通常用于在 Spring Boot 应用程序启动时执行一些初始化任务,例如加载数据、设置参数、启动服务等。这使得开发人员能够方便地在应用程序启动后执行一些必要的操作。

下面是一个简单的示例,展示如何使用 `CommandLineRunner` 接口:

```java
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class MyCommandLineRunner implements CommandLineRunner {

@Override
public void run(String… args) throws Exception {
// 在应用程序启动后执行的逻辑
System.out.println(“应用程序启动后执行的逻辑…”);
}
}
```

在这个示例中,`MyCommandLineRunner` 类实现了 `CommandLineRunner` 接口,并通过 `@Component` 注解将其声明为 Spring 组件。在应用程序启动时,Spring Boot 会自动扫描并执行实现了 `CommandLineRunner` 接口的类的 `run` 方法。

通过实现 `CommandLineRunner` 接口,你可以在应用程序启动后执行任何需要立即执行的逻辑,这为应用程序的初始化提供了一个方便的扩展点。

在 Spring Boot 应用程序中,所有实现了 `CommandLineRunner` 接口的 `@Component` 类的 `run` 方法并不是严格保证顺序串行执行的。Spring Boot 在执行这些 `CommandLineRunner` 实现类的 `run` 方法时,会并发地启动多个线程来执行这些逻辑,因此它们之间的执行顺序并不是固定的。

虽然 Spring Boot 不会严格保证 `CommandLineRunner` 实现类的执行顺序,但通常情况下,它们的执行顺序会按照它们在 Spring 应用上下文中的注册顺序来执行。这意味着如果你有多个实现了 `CommandLineRunner` 接口的 `@Component` 类,并且它们之间有依赖关系,你可以通过控制它们在 Spring 容器中的注册顺序来近似控制它们的执行顺序。

如果你需要确保某些 `CommandLineRunner` 实现类的执行顺序,你可以考虑使用 `@Order` 注解或者实现 `Ordered` 接口来设置它们的执行顺序。

下面是一个示例,演示如何使用 `@Order` 注解来控制 `CommandLineRunner` 实现类的执行顺序:

```java
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Order(1)
public class FirstRunner implements CommandLineRunner {

@Override
public void run(String… args) throws Exception {
System.out.println(“FirstRunner executed.”);
}
}

@Component
@Order(2)
public class SecondRunner implements CommandLineRunner {

@Override
public void run(String… args) throws Exception {
System.out.println(“SecondRunner executed.”);
}
}
```

在这个示例中,通过 `@Order` 注解设置了 `FirstRunner` 和 `SecondRunner` 的执行顺序,`FirstRunner` 的 `run` 方法会在 `SecondRunner` 的 `run` 方法之前执行。

http://www.jsqmd.com/news/450397/

相关文章:

  • 2026年郑州抖音短视频代运营服务商5强推荐榜单公布 - 精选优质企业推荐榜
  • RCE基础----DVWA,Pikachu,CTFHUB
  • MySQL事务隔离与MVCC底层实战
  • SpringBoot中Get请求和POST请求接收参数详解
  • SpringBoot Maven 项目 pom 中的 plugin 插件用法整理
  • springboot+全局异常处理
  • Android跨平台开发与硬件适配技术全景解析
  • Flutter 三方库 personnummer 的鸿蒙化适配指南 - 掌控身份资产、精密编号治理实战、鸿蒙级校验专家
  • python flask的老年人个人健康管理vue统计图
  • SpringBoot后端服务重定向
  • Springboot中mybatis的使用
  • Springboot中SLF4J详解
  • 5G NR PUSCH开环功控
  • GPT系列技术演进:从单向建模到多模态世界的架构革新
  • springboot和springframework版本依赖关系
  • springboot与springcloud以及springcloudalibaba版本对照
  • springboot+mybaties项目中扫描不到@mapper注解的解决方法
  • Photoroom 2026.10.08 | 法国大厂出品,高质量无限AI生图,最强电商作图
  • Flutter 三方库 sync 的鸿蒙化适配指南 - 掌控分布式同步资产、精密一致性治理实战、鸿蒙级全场景专家
  • 第十章 重新设计
  • 2026年湖北抖音短视频代运营公司推荐榜单TOP5公布 - 精选优质企业推荐榜
  • 从 10 万人里随机抽 10 个,怎么做最快?
  • 基于Java+SSM+Flask政府项目管理平台(源码+LW+调试文档+讲解等)/政府项目/管理平台/项目管理软件/政务管理/公共项目/项目监管/项目管理工具/项目追踪/项目控制系统/政府工程
  • C语言:2026.3.8
  • springboot与springcloud对应版本
  • 联合省选2026游记 | 跟我学一辈子OI
  • 基于Java+SSM+Flask个人消费管理系统(源码+LW+调试文档+讲解等)/个人财务管理/消费记录软件/个人支出管理系统/消费追踪工具/个人消费分析工具/理财软件/消费管理软件/个人账目管理系统
  • AI时代人人都是产品经理:避坑指南:AI 时代做产品,90% 的人都会踩的 3 个认知误区
  • SpringBoot实战(三十二)集成 ofdrw,实现 PDF 和 OFD 的转换、SM2 签署OFD
  • springboot中@PostConstruct注解使用详解