Spring Boot 的核心配置文件是 application.properties 和 application.yml,前者使用键值对,后者采用 YAML 格式,通过缩进表示层级,更易读且适合复杂配置;YAML 优先级高于 properties,二者可共存但建议只用一种;通过 Profile 实现多环境管理,如 application-dev.yml 等,并可通过命令行、环境变量等方式激活;配置加载顺序从高到低依次为:命令行参数、系统属性、环境变量、Profile 配置、默认配置文件等,实现灵活的外部化配置。

Spring Boot 的核心配置文件,说白了,就是
application.properties
application.yml
在我看来,
application.properties
application.yml
application.properties
server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/mydb logging.level.root=INFO
这种格式直观,对于简单的配置来说非常友好。但如果你有很多层级的配置,或者想表达更复杂的结构,它可能会显得有些冗长,需要用点分隔符来模拟层级。
而
application.yml
application.yaml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
logging:
level:
root: INFO我个人更倾向于使用
application.yml
它们之所以“核心”,是因为它们提供了应用运行所需的基础环境和行为设定。没有它们,或者说没有正确配置它们,你的 Spring Boot 应用可能根本就跑不起来,或者跑起来也无法正常工作。它们是应用与外部世界(数据库、消息队列、第三方服务等)交互的桥梁,也是你调整应用内部行为(比如日志输出、线程池大小)的控制中心。
Spring Boot 配置文件最常用的格式就是
.properties
.yml
.yaml
.properties
my.app.name=MyApplication
spring.datasource.url
spring.datasource.username
而
.yml
my:
app:
name: MyApplication这种格式的优势在于其清晰的层级结构和更好的可读性,尤其是在处理复杂的嵌套配置时,YAML 的优势非常明显。它避免了键名重复,通过缩进就能直观地看到配置项之间的关系。此外,YAML 还支持列表(数组)的表示,这在处理集合类型的配置时非常方便,比如:
servers:
- host: server1.example.com
port: 8080
- host: server2.example.com
port: 9090相比之下,
.properties
servers[0].host=server1.example.com
在实际项目中,我发现越来越多的团队倾向于使用 YAML,因为它能让配置变得更“干净”,更容易维护。不过,Spring Boot 对这两种格式都提供了原生支持,你可以根据团队习惯或者个人偏好自由选择。如果一个项目中同时存在
application.properties
application.yml
多环境管理是 Spring Boot 配置的另一个亮点,它能让你轻松地在开发、测试、生产等不同环境中切换配置,而无需修改代码。这极大地提升了开发效率和部署的灵活性。Spring Boot 实现多环境管理的核心机制是“Profile”(配置文件)。
基本思路是为每个环境创建独立的配置文件。例如:
application.properties
application.yml
application-dev.properties
application-dev.yml
application-test.properties
application-test.yml
application-prod.properties
application-prod.yml
当 Spring Boot 启动时,如果你激活了某个 Profile,比如
dev
application-dev.properties
application-dev.yml
application.properties
application.yml
application-dev
application
激活 Profile 的方式有很多种,最常见的几种:
通过命令行参数: 这是最直接的方式,特别适合在部署时指定。
java -jar your-app.jar --spring.profiles.active=dev
或者同时激活多个 Profile:
java -jar your-app.jar --spring.profiles.active=dev,mysql
通过系统属性: 在启动 JVM 时设置。
java -Dspring.profiles.active=test -jar your-app.jar
在 application.properties
application.yml
# application.properties spring.profiles.active=dev
或者
# application.yml
spring:
profiles:
active: dev这种方式通常用于本地开发环境,或者作为默认的 Fallback Profile。不过,在生产环境,我更倾向于通过命令行或环境变量来激活,因为这样在部署时可以更灵活地切换,避免了修改代码或打包。
通过环境变量:
export SPRING_PROFILES_ACTIVE=prod java -jar your-app.jar
这是在容器化部署(如 Docker、Kubernetes)中最常用的方式,因为它能很好地实现配置与代码的分离。
我个人觉得,多环境管理是 Spring Boot 最实用、最“接地气”的功能之一。它解决了我们在不同部署阶段,需要频繁修改配置的痛点。尤其是在微服务架构下,每个服务都可能部署在不同的环境中,这种机制让配置管理变得异常简单和健壮。
Spring Boot 的配置加载机制远比你想象的要强大和灵活。它不仅仅局限于
application.properties
application.yml
Spring Boot 默认的配置加载顺序大概有以下几个关键层级(从高到低,高优先级会覆盖低优先级):
命令行参数: 这是优先级最高的。任何以
--
--server.port=9000
server.port
Java 系统属性(System.properties
java -Dkey=value
java -Dserver.port=8081 -jar your-app.jar
操作系统环境变量: Spring Boot 会将操作系统环境变量转换为配置属性。例如,
SERVER_PORT=8082
server.port
SPRING_APPLICATION_JSON
SPRING_CONFIG_LOCATION
RandomValuePropertySource
my.secret=${random.value}特定 Profile 的应用配置(application-{profile}.propertiesapplication-{profile}.yml
dev
application-dev.properties
应用默认配置(application.properties
application.yml
@PropertySource
@Configuration
@PropertySource
SpringApplication.setDefaultProperties: 这是通过编程方式设置的默认属性,优先级最低。
这种层层覆盖的机制,我认为是 Spring Boot 外部化配置的精髓。它允许你从最外部(命令行、环境变量)到最内部(代码默认值)逐级定制配置,同时保持了清晰的优先级。在实际开发中,我们经常会利用这种特性,比如本地开发时用
application-dev.yml
以上就是spring boot 核心配置文件是什么?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号