一、基础概念
1. **application.properties**: 这是 Spring Boot 默认使用的属性源格式,采用键值对的形式存储数据。例如:
properties
server.port=8080
spring.datasource.url=jdbc:mysql://localhost/testdb
2. **application.yml**:YAML 是一种直观且易于阅读的数据序列化语言,在结构上比 properties 更加强大和灵活。同样以上面的例子为例:
yaml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost/testdb
二、高级特性及使用示例
- **外部加载配置**
Spring Boot 支持从多种来源读取配置信息,除了项目内的 `src/main/resources` 下的配置文件外,还可以来自以下途径:
- 命令行参数(如 --server.port=9000)
- 来源于环境变量 (SERVER_PORT=9000)
- 作为命令行或操作系统特定的Profiles(比如spring.profiles.active=test时可以从test目录下加载资源配置)
- **Profile-specific Properties**
在实际场景中,我们可能需要针对不同的运行环境提供不同配置。为此,Spring Boot 提供 profiles 功能支持多套环境切换。
创建名为 application-dev.properties 和 application-prod.properties 分别对应于开发和生产环境,并激活相应的 profile 即可生效。
- **Property Placeholders and Expressions**
Spring Boot 允许引用其他属性或者表达式来构建新的属性值:
yml
app:
name: MyApp
description: My App Description with property ${app.name}
- **Bootstrapping the Default Configuration**
Spring Boot 自带一系列默认配置项,涵盖了日志管理(Logging), 数据库连接(Database Connection) ,Web服务器(Server Settings),安全(Security Configurations)等多个方面。开发者可以通过覆盖这些默认设定以适应具体的应用需求。
三、定制自己的@ConfigurationProperties类
为了更清晰地组织复杂度较高的配置并将其绑定到Java Bean对象中以便更好地管理和复用,可以创建一个带有 @ConfigurationProperties 注解的类:
java
@Component
@ConfigurationProperties(prefix = "custom")
public class CustomConfig {
private String settingA;
// getters & setters...
}
然后你可以在你的 yml/properties 中这样编写:
yaml
custom:
setting-a: someValue
总结来说,理解并熟练运用好 Spring Boot 配置文件机制,不仅可以帮助我们在面对各种复杂的部署环境变化时游刃有余调整系统行为,更能有效提升应用程序的设计质量和维护效率。此外,它还为我们的微服务架构提供了强大的灵活性以及统一化的配置管理模式。