您现在的位置是:首页 > 编程 > 

【Spring Boot】00

2025-07-23 20:37:29
【Spring Boot】00 【Spring Boot】00-系统启动任务一、前言有一些 特殊的任务 需要在 系统启动时 执行。例如 配置文件加载、数据库初始化 等操作。如果没有使用 Spring Boot ,这些问题可以在 Listener 中解决。Spring Boot 对此提供了两种解决方案:CommandLineRunner 和 ApplicationRunner。CommandLi

【Spring Boot】00

【Spring Boot】00-系统启动任务一、前言

有一些 特殊的任务 需要在 系统启动时 执行。例如 配置文件加载、数据库初始化 等操作。如果没有使用 Spring Boot ,这些问题可以在 Listener 中解决。Spring Boot 对此提供了两种解决方案:CommandLineRunner 和 ApplicationRunner。CommandLineRunner 和 ApplicationRunner 基本一致,差别主要体现在参数上。

二、CommandLineRunner

1、概述

调用机制

Spring Boot 项目在启动时会遍历所有 CommandLineRunner 的实现类并调用其中的 run() 方法;

指定调用顺序

如果整个系统中有多个 CommandLineRunner 的实现类,那么可以使用@Order注解对这些实现类的调用顺序进行排序;

2、代码演示

实现类1
代码语言:javascript代码运行次数:0运行复制
package com.zibo.api.runner;

import slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.annotation.Configuration;
import org.annotation.Order;

@Configuration
@Slf4j
@Order(1)
public class MyCommandLineRunnerImplA implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        log.info("启动系统任务:" + "MyCommandLineRunnerImplA == @Order(1)");
    }
}
实现类2
代码语言:javascript代码运行次数:0运行复制
package com.zibo.api.runner;

import slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.annotation.Configuration;
import org.annotation.Order;

@Configuration
@Slf4j
@Order(2)
public class MyCommandLineRunnerImplB implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        log.info("启动系统任务:" + "MyCommandLineRunnerImplA == @Order(2)");
    }
}

、运行结果

image-20210819094778

4、补充说明

  • @Order(number),其中的 number 从小到大执行,也就是值越小越先执行;
  • run 方法中的参数是启动系统时传入的参数,即入口类中的 main 方法的参数;
三、ApplicationRunner

1、概述

ApplicationRunner 的用法和 CommandLineRunner 基本一致,主要区别的 run 方法的参数;

2、代码演示

实现类1
代码语言:javascript代码运行次数:0运行复制
package com.zibo.api.runner;

import slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.annotation.Configuration;
import org.annotation.Order;

@Configuration
@Slf4j
@Order(1)
public class MyApplicationRunnerImplA implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("启动系统任务:" + "MyApplicationRunnerImplA == @Order(1)");
    }
}
实现类2
代码语言:javascript代码运行次数:0运行复制
package com.zibo.api.runner;

import slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.annotation.Configuration;
import org.annotation.Order;

@Configuration
@Slf4j
@Order(2)
public class MyApplicationRunnerImplB implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("启动系统任务:" + "MyApplicationRunnerImplB == @Order(2)");
    }
}

、运行结果

image-20210819095711640

4、补充说明

  • @Order(number),其中的 number 从小到大执行,也就是值越小越先执行;
  • 这里的 run 方法的参数是一个 ApplicationArguments 对象,如果想从 ApplicationArguments 对象中获取 main 函数的参数,调用 ApplicationArguments 对象的 getonOptionArgs 方法即可。ApplicationArguments 对象中使用 getOptionames 方法来获取项目启动命令中的参数 key。 例如将本项目打成 jar 包,运行 java -jar xxx.jar -name=Michael 命令来启动项目,此时 getOptionames 方法获取到的就是 name ,而 getOptionValues 方法则是获取相应的 value
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent 删除import对象系统springboot

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1198680.html

相关标签:无
上传时间: 2025-07-23 12:28:53

上一篇:【Spring Boot】031

下一篇:【Spring Boot】029

留言与评论(共有 12 条评论)
本站网友 青葙子
20分钟前 发表
【Spring Boot】00 【Spring Boot】00-系统启动任务一
本站网友 布丁酒店官网
30分钟前 发表
原始发表:2025-01-06
本站网友 5713交易平台
29分钟前 发表
补充说明@Order(number)
本站网友 食母
9分钟前 发表
差别主要体现在参数上
本站网友 美容护肤去黑豆
4分钟前 发表
【Spring Boot】00 【Spring Boot】00-系统启动任务一
本站网友 穴位埋线减肥
7分钟前 发表
也就是值越小越先执行; 这里的 run 方法的参数是一个 ApplicationArguments 对象
本站网友 mederma
7分钟前 发表
其中的 number 从小到大执行
本站网友 广州王府井百货
17分钟前 发表
如有侵权请联系 cloudcommunity@tencent 删除前往查看import对象系统springboot
本站网友 坐月子食谱30天
9分钟前 发表
分享自作者个人站点/博客
本站网友 天伦不孕不育
17分钟前 发表
那么可以使用@Order注解对这些实现类的调用顺序进行排序;2
本站网友 桔梗的功效与作用
12分钟前 发表
其中的 number 从小到大执行