当前位置: 首页 > 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.lqws.cn/news/484705.html

相关文章:

  • EXPLAIN优化 SQL示例
  • MySQL之索引结构和分类深度详解
  • UML:类图
  • 电脑商城--购物车
  • Windows 后渗透中可能会遇到的加密字符串分析
  • 第16章 接口 笔记
  • 嵌入式C语言编程规范
  • 逻辑门电路Multisim电路仿真汇总——硬件工程师笔记
  • 等等等等等等
  • git安装使用详细教程
  • 每日算法刷题Day35 6.22:leetcode枚举技巧枚举中间2道题,用时1h
  • ruoyi-flowable-plus中satoken的配置使用
  • Kafka Streams架构深度解析:从并行处理到容错机制的全链路实践
  • TCP流量控制与拥塞控制:核心机制与区别
  • git 如何忽略某个文件夹文件
  • AI 辅助生成 Mermaid 流程图
  • Python 的内置函数 help
  • Matplotlib入门指南:从安装到绘制基本图形
  • 给docker 配置代理 IP机端口
  • Protobuf 与 JSON 的兼容性:技术选型的权衡与实践
  • Hadoop部署(HA)高可用集群
  • 编程语言分类大全:从系统到AI开发
  • Go 循环依赖的依赖注入解决方案详解
  • Maven通过修改pom.xml配置文件下载指定依赖包,以及解决MVNRepository网站加载和验证问题的方法
  • 【人工智能基础】初识神经网络
  • 仕么是GAN网络和原理和架构
  • 核弹地图NUKEMAP官网- 核弹爆炸在线网页模拟器网站
  • ThermoMPNN/ThermoMPNN-D 的安装及使用教程
  • UE5关卡快照
  • 深入理解Spring的ResponseBodyAdvice接口