第三篇 SpringBoot的配置文件

SpringBoot 配置文件概述

SpringBoot 的配置文件用于定义应用程序的参数、环境变量、数据库连接等配置信息。支持多种格式,如 application.propertiesapplication.yml,默认存放在 src/main/resources 目录下。

配置文件类型

properties 格式

传统的键值对格式,适合简单配置。

示例:

properties 复制代码
server.port=8080  
spring.datasource.url=jdbc:mysql://localhost:3306/db  
spring.datasource.username=root  

YAML 格式

层次化结构,适合复杂配置,可读性更强。

示例:

yaml 复制代码
server:  
  port: 8080  
spring:  
  datasource:  
    url: jdbc:mysql://localhost:3306/db  
    username: root  

多环境配置

通过文件名区分不同环境(如开发、测试、生产)。

  • application-dev.yml(开发环境)
  • application-test.yml(测试环境)
  • application-prod.yml(生产环境)

激活指定环境:

properties 复制代码
spring.profiles.active=dev  

自定义配置

支持在配置文件中定义自定义参数,并通过 @Value@ConfigurationProperties 注入。

示例:

yaml 复制代码
app:  
  name: "MyApp"  
  timeout: 30  

使用 @Value 注入

java 复制代码
@Value("${app.name}")  
private String appName;  

使用 @ConfigurationProperties 批量注入

java 复制代码
@ConfigurationProperties(prefix = "app")  
public class AppConfig {  
    private String name;  
    private int timeout;  
    // getters & setters  
}  

配置文件优先级

SpringBoot 加载配置文件的优先级(从高到低):

  1. 项目根目录下的 /config 子目录
  2. 项目根目录
  3. 类路径下的 /config 目录
  4. 类路径根目录

高优先级配置会覆盖低优先级配置。

外部化配置

支持通过命令行参数、系统环境变量或外部文件覆盖默认配置。

示例(命令行激活环境并指定端口):

bash 复制代码
java -jar app.jar --spring.profiles.active=prod --server.port=9090  

动态配置刷新

结合 Spring Cloud Config 或 Nacos 等配置中心,可实现配置动态更新。需添加 @RefreshScope 注解:

java 复制代码
@RefreshScope  
@RestController  
public class DemoController {  
    @Value("${app.message}")  
    private String message;  
}  
相关推荐
涡能增压发动积13 小时前
同样的代码循环 10次正常 循环 100次就抛异常?自定义 Comparator 的 bug 让我丢尽颜面
后端
云烟成雨TD13 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
Wenweno0o14 小时前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
于慨14 小时前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
swg32132114 小时前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
tyung14 小时前
一个 main.go 搞定协作白板:你画一笔,全世界都看见
后端·go
gelald14 小时前
SpringBoot - 自动配置原理
java·spring boot·后端
@yanyu66614 小时前
07-引入element布局及spring boot完善后端
javascript·vue.js·spring boot
殷紫川14 小时前
深入理解 AQS:从架构到实现,解锁 Java 并发编程的核心密钥
java
一轮弯弯的明月14 小时前
贝尔数求集合划分方案总数
java·笔记·蓝桥杯·学习心得