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

Spring Boot 项目初始化

一、什么是 CommandLineRunner

CommandLineRunner 是 Spring Boot 提供的一个 函数式接口,声明如下:

 

该接口只有一个 run(String... args) 方法,会在 Spring Boot 容器启动完成后被自动调用
你可以将它理解为一种“钩子函数”,用于执行初始化逻辑。


二、CommandLineRunner 的作用

主要用于:

作用说明
启动初始化操作加载缓存数据、初始化数据库数据、生成初始配置文件等
校验环境依赖比如检查数据库、Redis、外部服务是否可用
注册服务或发送启动日志向注册中心、监控系统报告服务已启动
接收命令行参数解析命令行参数,实现不同的启动模式(例如 debugbatch

三、如何实现 CommandLineRunner?

1. 基本用法

import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;@Component
public class MyStartupRunner implements CommandLineRunner {@Overridepublic void run(String... args) throws Exception {System.out.println("应用启动完成,开始执行初始化逻辑...");// 可以执行任意逻辑,例如初始化数据、加载缓存等}
}

只要这个类被 Spring 扫描到(加了 @Component),Spring Boot 启动后就会自动执行 run() 方法。


2. 注入其他 Bean 使用

@Component
public class DataInitializer implements CommandLineRunner {private final UserRepository userRepository;public DataInitializer(UserRepository userRepository) {this.userRepository = userRepository;}@Overridepublic void run(String... args) throws Exception {if (userRepository.count() == 0) {userRepository.save(new User("admin", "123456"));System.out.println("已插入初始用户");}}
}

此时你可以访问数据库、Redis 等所有依赖,因为上下文已完全加载。


3. 使用 @Order 控制执行顺序(多个 CommandLineRunner)

@Component
@Order(1)
public class Runner1 implements CommandLineRunner {public void run(String... args) {System.out.println("Runner1 执行");}
}@Component
@Order(2)
public class Runner2 implements CommandLineRunner {public void run(String... args) {System.out.println("Runner2 执行");}
}
http://www.lryc.cn/news/573661.html

相关文章:

  • AWS 使用图形化界面创建 EKS 集群(零基础教程)
  • LabVIEW图像拼接原理与实现 链接附件有演示录像
  • 如何用AI开发完整的小程序<9>—UI自适应与游戏页优化
  • 关于uniapp解析SSE响应数据的处理
  • 【学习笔记】深入理解Java虚拟机学习笔记——第11章 后端编译与优化
  • 关于CH32开发板烧录说明
  • 用可观测工具高效定位和查找设计中深度隐藏的bug
  • webpack+vite前端构建工具 -6从loader本质看各种语言处理 7webpack处理html
  • Linux内核中安全创建套接字:为何inet_create未导出及正确替代方案
  • SAP金属行业解决方案:无锡哲讯科技助力企业数字化转型与高效运营
  • Kafka Streams架构深度解析:从并行处理到容错机制的全链路实践
  • 针对数据仓库方向的大数据算法工程师面试经验总结
  • netcore url编码/解码
  • [计算机网络] 局域网内的网络传输
  • SpringBoot+Vue服装商城系统 附带详细运行指导视频
  • 3dgs涉及的基本概念:球谐系数(SH 系数)等
  • Python之数据容器
  • 【JavaScript】代码整理
  • vim学习流程,以及快捷键总结
  • Python 深度学习基础:TensorFlow 入门——从张量到神经网络的实战指南
  • 【2025年软考中级】第三章数据结构3.4 数组与矩阵
  • Flink作业三种部署模式:架构、配置与实战应用
  • rknn优化教程(三)
  • Bytemd@Bytemd/react详解(编辑器实现基础AST、插件、跨框架)
  • 【云原生】Docker 部署 Elasticsearch 9 操作详解
  • Git Worktree:高效开发的秘密武器
  • C# 数组(数组协变和数组继承的有用成员)
  • webpack+vite前端构建工具 - 8 代码分割
  • 【数据结构试题】
  • C#Halcon从零开发_Day13_几种阈值分割方法