第三篇 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;  
}  
相关推荐
Coder_Boy_2 分钟前
基于SpringAI的在线考试系统-相关技术栈(分布式场景下事件机制)
java·spring boot·分布式·ddd
独自破碎E3 分钟前
【BISHI15】小红的夹吃棋
android·java·开发语言
冻感糕人~4 分钟前
【珍藏必备】ReAct框架实战指南:从零开始构建AI智能体,让大模型学会思考与行动
java·前端·人工智能·react.js·大模型·就业·大模型学习
啦啦啦_999910 分钟前
Redis实例-2
java
alice--小文子15 分钟前
cursor-mcp工具使用
java·服务器·前端
进阶小白猿15 分钟前
Java技术八股学习Day33
java·开发语言·学习
程序员敲代码吗21 分钟前
如何通过命令行启动COMSOL的参数化、批处理和集群扫描
java·c#·bash
MX_935926 分钟前
Spring的bean工厂后处理器和Bean后处理器
java·后端·spring
市场部需要一个软件开发岗位43 分钟前
JAVA开发常见安全问题:纵向越权
java·数据库·安全
历程里程碑1 小时前
普通数组----合并区间
java·数据结构·python·算法·leetcode·职场和发展·tornado