当前位置: 首页 > 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 执行");}
}

相关文章:

  • HCIP-Datacom Core Technology V1.0_4 OSPF路由计算
  • 抽象工厂设计模式
  • 从C++编程入手设计模式——责任链模式
  • 大模型应用:如何使用Langchain+Qwen部署一套Rag检索系统
  • 【机器学习四大核心任务类型详解】分类、回归、聚类、降维都是什么?
  • OpenGL ES 中的材质
  • 分布式ID生成方式及优缺点详解
  • [特殊字符] AIGC工具深度实战:GPT与通义灵码如何彻底重构企业开发流程
  • 电脑商城--购物车
  • Camera Sensor接口协议全解析(三):移动霸主——MIPI CSI-2架构拆解
  • 【数据结构】_二叉树部分特征统计
  • rom定制系列------红米note11 5G版 MTK芯片强解bl锁修复bug 官方系统 面具root批量线刷版
  • React 新钩子useImperativeHandle
  • 华为OD机考-素数伴侣-逻辑分析(JAVA 2025B卷)
  • AWS 使用图形化界面创建 EKS 集群(零基础教程)
  • jenkins对接、jenkins-rest
  • 单例模式-Python示例
  • 如何仅用AI开发完整的小程序<4>—小程序页面创建与删除
  • 【Linux】进程间多种通信方式对比
  • Flink Sink函数深度解析:从原理到实践的全流程探索
  • 西宁网站建设有限公司/网站推广软件免费版大全
  • 银川网站制作报价/乐云seo官网
  • 怎么做网站代销/制作公司网站
  • 公司网站建站流程/关键词歌词表达的意思
  • 响应式网站怎么做mip/今日重大新闻
  • 苏州网站推广电话/seo文章是什么