1. 配置文件分类
1.1 Spring Boot 配置文件分类
1.1.1 按环境分类
- application.yml:主配置文件,适用于所有环境
- application-{profile}.yml:环境特定配置文件
application-dev.yml:开发环境application-test.yml:测试环境application-staging.yml:预发布环境application-prod.yml:生产环境
1.1.2 按位置分类(加载优先级从高到低)
- 命令行参数
- java:comp/env 中的 JNDI 属性
- Java 系统属性 (System.getProperties())
- 操作系统环境变量
- jar 包外部的 application-{profile}.properties/yml
- jar 包内部的 application-{profile}.properties/yml
- jar 包外部的 application.properties/yml
- jar 包内部的 application.properties/yml
1.2 Spring Cloud 配置文件分类
1.2.1 客户端配置文件
- bootstrap.yml:引导配置文件(Spring Boot 2.4+ 需要额外依赖)
- application.yml:应用配置文件
1.2.2 配置中心配置文件
- {application-name}-{profile}.yml:存储在配置中心的配置文件
2. 配置加载机制详解
2.1 Spring Boot 配置加载顺序(优先级从高到低)
1. 命令行参数 (--server.port=8081)
2. SPRING_APPLICATION_JSON 中的属性
3. ServletConfig 初始化参数
4. ServletContext 初始化参数
5. JNDI 属性
6. Java 系统属性 (System.getProperties())
7. 操作系统环境变量
8. RandomValuePropertySource 配置的 random.* 属性
9. jar 包外部的 profile-specific 配置文件
10. jar 包内部的 profile-specific 配置文件
11. jar 包外部的 application 配置文件
12. jar 包内部的 application 配置文件
13. @Configuration 类上的 @PropertySource 注解
14. 默认属性 (SpringApplication.setDefaultProperties)
2.2 Spring Cloud 配置加载机制
2.2.1 核心概念:加载顺序 vs 优先级顺序
重要澄清:加载顺序 ≠ 优先级顺序
- 加载顺序:指配置文件被读取的时间先后
- 优先级顺序:指同名属性最终生效的规则
2.2.2 实际优先级顺序(从高到低)
1. 命令行参数
2. 环境变量
3. 配置中心配置(user-service.yml, user-service-dev.yml)← 高优先级
4. 本地 application-{profile}.yml
5. 本地 application.yml
6. bootstrap.yml (Spring Boot 2.4+ 不推荐使用)
7. 默认属性
2.2.3 关键结论
- 配置中心配置优先级高于本地 application 配置
- 相同属性名时,配置中心的值会覆盖本地配置
- 这是 Spring Cloud Config 的核心设计理念
2.3 Spring Boot 2.4+ 的重大变化
2.3.1 bootstrap.yml 默认行为变化
Spring Boot 2.3 及之前版本:
bootstrap.yml默认会被自动加载- 无需额外依赖
Spring Boot 2.4 及之后版本:
bootstrap.yml默认被禁用,不会被加载- 必须显式引入
spring-cloud-starter-bootstrap依赖才能启用
2.3.2 官方推荐的新配置方式
Spring Boot 2.4+ 推荐使用 spring.config.import 方式:
# application.yml(新方式)
spring:
application:
name: user-service
config:
import:
- optional:configserver:http://config-server:8888
3. 详细配置文件示例
3.1 bootstrap.yml 示例(Spring Cloud 引导配置)
# bootstrap.yml - Spring Cloud 引导配置文件
# 说明:此文件在 application.yml 之前加载,主要用于配置配置中心连接信息
# 注意:Spring Boot 2.4+ 需要 spring-cloud-starter-bootstrap 依赖
# 应用基本信息配置
spring:
# 应用名称,也是配置中心中配置文件的前缀名
application:
name: user-service
# 配置中心相关配置
cloud:
# 配置中心客户端配置
config:
# 配置中心服务器地址
uri: http://config-server:8888
# 是否启用配置中心(默认true)
enabled: true
# 配置文件格式(properties/yml/yaml)
profile: yml
# 分支名称(Git仓库)
label: master
# 连接超时时间(毫秒)
timeout: 5000
# 重试配置
retry:
# 是否启用重试
enabled: true
# 初始重试间隔(毫秒)
initial-interval: 1000
# 最大重试间隔(毫秒)
max-interval: 2000
# 最大重试次数
max-attempts: 3
# 服务发现配置(如果使用 Eureka)
discovery:
# 是否通过服务发现获取配置中心地址
enabled: true
# 配置中心在服务注册中心的服务名
service-id: config-server
# 加密/解密配置(可选)
encrypt:
key: my-secret-key
# 日志级别配置(引导阶段)
logging:
level:
org.springframework.cloud: DEBUG
3.2 application.yml 示例(主配置文件)
# application.yml - 主应用配置文件
# 说明:包含应用的核心配置,会被环境特定配置覆盖
# 注意:配置中心的同名配置会覆盖此文件中的配置
# 服务器配置
server:
# 服务端口
port: 8080
# 上下文路径
servlet:
context-path: /api
# Tomcat 配置
tomcat:
# 最大线程数
max-threads: 200
# 最小空闲线程数
min-spare-threads: 10
# 连接超时时间(毫秒)
connection-timeout: 20000
# Spring 相关配置
spring:
# 应用基本信息
application:
name: user-service
# 应用描述
description: 用户服务模块
# 数据源配置
datasource:
# 数据库驱动类名
driver-class-name: com.mysql.cj.jdbc.Driver
# 数据库连接URL
url: jdbc:mysql://localhost:3306/user_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
# 数据库用户名
username: root
# 数据库密码
password: password
# 连接池配置
hikari:
# 连接池名称
pool-name: UserHikariCP
# 最大连接数
maximum-pool-size: 20
# 最小空闲连接数
minimum-idle: 5
# 连接超时时间(毫秒)
connection-timeout: 30000
# 空闲连接存活时间(毫秒)
idle-timeout: 600000
# 连接最大生命周期(毫秒)
max-lifetime: 1800000
# JPA/Hibernate 配置
jpa:
# 是否在启动时显示 SQL 语句
show-sql: false
# 数据库方言
database-platform: org.hibernate.dialect.MySQL8Dialect
# Hibernate DDL 自动模式
hibernate:
ddl-auto: update
# 实体包扫描路径
packages-to-scan: com.example.user.entity
# Redis 配置
redis:
# Redis 服务器地址
host: localhost
# Redis 服务器端口
port: 6379
# 连接超时时间(毫秒)
timeout: 5000
# 数据库索引
database: 0
# 密码(如果需要)
password:
# 连接池配置
lettuce:
pool:
# 最大连接数
max-active: 8
# 最大空闲连接数
max-idle: 8
# 最小空闲连接数
min-idle: 0
# 获取连接时的最大等待时间(毫秒)
max-wait: -1ms
# 消息队列配置(RabbitMQ 示例)
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
virtual-host: /
# 连接超时配置
connection-timeout: 5000
# 监听器配置
listener:
simple:
# 并发消费者数量
concurrency: 5
# 最大并发消费者数量
max-concurrency: 10
# 每次批量消费的消息数量
prefetch: 1
# 文件上传配置
servlet:
multipart:
# 是否启用文件上传
enabled: true
# 单个文件最大大小
max-file-size: 10MB
# 单次请求最大大小
max-request-size: 100MB
# 国际化配置
messages:
# 消息文件基础名
basename: messages
# 编码格式
encoding: UTF-8
# 自定义业务配置
user:
# 用户服务相关配置
service:
# 用户缓存过期时间(秒)
cache-expire-time: 3600
# 最大用户注册数量
max-registration-count: 10000
# 是否启用邮箱验证
enable-email-verification: true
# 邮箱验证链接有效期(小时)
email-verification-expire-hours: 24
# 第三方API配置
third-party:
sms:
# 短信服务商API地址
api-url: https://sms-api.example.com/send
# API密钥
api-key: your-api-key
# 发送超时时间(毫秒)
timeout: 5000
# Actuator 监控端点配置
management:
# 端点基础路径
endpoints:
web:
base-path: /actuator
exposure:
# 暴露所有端点(生产环境建议只暴露必要的端点)
include: "*"
# 健康检查详细信息
endpoint:
health:
show-details: always
# 指标配置
metrics:
export:
prometheus:
enabled: true
# 日志配置
logging:
# 日志级别配置
level:
# 根日志级别
root: INFO
# 应用包日志级别
com.example.user: DEBUG
# Spring Web 日志级别
org.springframework.web: INFO
# 数据库操作日志级别
org.hibernate.SQL: DEBUG
# 日志文件配置
file:
name: logs/user-service.log
# 日志文件最大大小
max-size: 10MB
# 保留的日志文件数量
max-history: 30
# 安全配置(Spring Security)
security:
# JWT 配置
jwt:
# 密钥
secret: my-secret-key-for-jwt
# 过期时间(毫秒)
expiration: 86400000
# 头部名称
header: Authorization
3.3 application-dev.yml 示例(开发环境配置)
# application-dev.yml - 开发环境配置文件
# 说明:此配置仅在开发环境生效
# 注意:如果配置中心有同名配置,配置中心的值会覆盖此文件
# 服务器配置(开发环境使用不同端口)
server:
port: 8081
servlet:
context-path: /api
# Spring 配置
spring:
# 数据源配置(开发环境数据库)
datasource:
url: jdbc:mysql://localhost:3306/user_db_dev?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: dev_user
password: dev_password
hikari:
maximum-pool-size: 10
minimum-idle: 2
# Redis 配置(开发环境)
redis:
host: localhost
port: 6379
database: 1
# 启用 H2 控制台(开发调试用)
h2:
console:
enabled: true
path: /h2-console
# 开发环境特定的配置
profiles:
active: dev
# 开发环境自定义配置
user:
service:
# 开发环境缓存时间较短,便于调试
cache-expire-time: 60
# 开发环境不启用邮箱验证
enable-email-verification: false
third-party:
sms:
# 开发环境使用模拟API
api-url: http://localhost:9000/mock-sms
api-key: mock-api-key
# Actuator 配置(开发环境暴露更多端点)
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
# 日志配置(开发环境显示更详细日志)
logging:
level:
root: DEBUG
com.example.user: DEBUG
org.springframework.web: DEBUG
org.hibernate.SQL: DEBUG
org.hibernate.type.descriptor.sql.BasicBinder: TRACE
file:
name: logs/user-service-dev.log
3.4 application-test.yml 示例(测试环境配置)
# application-test.yml - 测试环境配置文件
# 说明:此配置用于单元测试、集成测试和自动化测试环境
# 服务器配置(测试环境)
server:
port: 8082
servlet:
context-path: /api
# Spring 配置
spring:
# 测试环境激活配置
profiles:
active: test
# 数据源配置(测试环境 - 使用内存数据库)
datasource:
# 使用 H2 内存数据库进行测试
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
username: sa
password:
hikari:
maximum-pool-size: 5
minimum-idle: 1
# JPA 配置(测试环境)
jpa:
show-sql: false
database-platform: org.hibernate.dialect.H2Dialect
hibernate:
# 测试环境每次启动都重新创建表结构
ddl-auto: create-drop
packages-to-scan: com.example.user.entity
# Redis 配置(测试环境 - 使用嵌入式 Redis 或禁用)
redis:
host: localhost
port: 6380 # 测试环境使用不同的 Redis 端口
database: 2
timeout: 1000
lettuce:
pool:
max-active: 5
max-idle: 3
min-idle: 1
max-wait: 1000ms
# 消息队列配置(测试环境 - 使用嵌入式 RabbitMQ 或模拟)
rabbitmq:
host: localhost
port: 5673 # 测试环境使用不同的端口
username: test
password: test
virtual-host: /test
# 测试环境特定配置
main:
# 允许循环依赖(某些测试场景可能需要)
allow-circular-references: true
# 测试环境自定义配置
user:
service:
# 测试环境缓存时间极短或禁用缓存
cache-expire-time: 10
# 测试环境不限制注册数量
max-registration-count: 999999
# 测试环境邮箱验证可选
enable-email-verification: false
third-party:
sms:
# 测试环境使用模拟服务
api-url: http://localhost:9001/mock-sms-test
api-key: test-api-key
timeout: 1000
# Actuator 配置(测试环境)
management:
endpoints:
web:
exposure:
include: health,info,metrics,env,beans
endpoint:
health:
show-details: always
# 日志配置(测试环境 - 详细日志便于调试)
logging:
level:
root: INFO
com.example.user: DEBUG
org.springframework: INFO
org.springframework.test: DEBUG
org.hibernate.SQL: DEBUG
file:
name: logs/user-service-test.log
max-size: 50MB
max-history: 7
# 测试专用配置
test:
# 测试数据初始化配置
data:
# 是否在测试前初始化测试数据
initialize: true
# 测试数据文件路径
init-script: classpath:test-data.sql
# Mock 服务配置
mock:
# 是否启用所有第三方服务的 Mock
enabled: true
# Mock 延迟时间(毫秒)
delay: 100
3.5 application-staging.yml 示例(预发布环境配置)
# application-staging.yml - 预发布环境配置文件
# 说明:此配置用于预发布/准生产环境,配置应尽可能接近生产环境
# 服务器配置(预发布环境)
server:
port: 8080
servlet:
context-path: /api
tomcat:
max-threads: 400
min-spare-threads: 20
connection-timeout: 15000
# 预发布环境也启用 HTTPS
ssl:
enabled: true
key-store: classpath:staging-keystore.p12
key-store-password: staging-changeit
key-store-type: PKCS12
key-alias: tomcat
# Spring 配置
spring:
# 预发布环境激活配置
profiles:
active: staging
# 数据源配置(预发布环境数据库)
datasource:
url: jdbc:mysql://staging-db-cluster:3306/user_db_staging?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=true
username: ${DB_USERNAME_STAGING}
password: ${DB_PASSWORD_STAGING}
hikari:
maximum-pool-size: 40
minimum-idle: 8
connection-timeout: 20000
idle-timeout: 300000
max-lifetime: 1200000
connection-test-query: SELECT 1
# Redis 配置(预发布环境集群)
redis:
cluster:
nodes:
- staging-redis-1:7000
- staging-redis-2:7001
- staging-redis-3:7002
timeout: 2000
lettuce:
pool:
max-active: 15
max-idle: 8
min-idle: 3
max-wait: 2000ms
# 消息队列配置(预发布环境)
rabbitmq:
host: staging-rabbitmq-cluster
port: 5672
username: ${RABBITMQ_USERNAME_STAGING}
password: ${RABBITMQ_PASSWORD_STAGING}
virtual-host: /staging
connection-timeout: 5000
listener:
simple:
concurrency: 3
max-concurrency: 8
prefetch: 1
# 预发布环境自定义配置
user:
service:
# 预发布环境缓存时间接近生产环境
cache-expire-time: 3600 # 1小时
max-registration-count: 500000
enable-email-verification: true
email-verification-expire-hours: 24
third-party:
sms:
# 预发布环境使用真实的第三方服务但有限制
api-url: https://staging-sms-api.example.com/send
api-key: ${SMS_API_KEY_STAGING}
timeout: 3000
# 预发布环境短信发送限制
rate-limit:
max-per-minute: 10
max-per-hour: 100
# Spring Cloud 配置(预发布环境)
spring:
cloud:
# 服务发现配置
discovery:
client:
simple:
instances:
user-service:
- uri: http://staging-user-service-1:8080
- uri: http://staging-user-service-2:8080
# 熔断器配置
circuitbreaker:
resilience4j:
instances:
userService:
failureRateThreshold: 50
waitDurationInOpenState: 5000
permittedNumberOfCallsInHalfOpenState: 3
slidingWindowSize: 10
# Actuator 配置(预发布环境)
management:
endpoints:
web:
exposure:
include: health,info,metrics,prometheus,env,beans,configprops
endpoint:
health:
show-details: when_authorized
env:
enabled: true
beans:
enabled: true
# 日志配置(预发布环境)
logging:
level:
root: INFO
com.example.user: DEBUG
org.springframework.web: INFO
org.hibernate.SQL: WARN
file:
name: /var/log/user-service/user-service-staging.log
max-size: 100MB
max-history: 30
# 安全配置(预发布环境)
security:
jwt:
secret: ${JWT_SECRET_STAGING}
expiration: 172800000 # 2天
header: Authorization
# 监控和告警配置
monitoring:
# 应用性能监控
apm:
enabled: true
server-url: https://staging-apm.example.com
service-name: user-service-staging
# 告警配置
alert:
email:
enabled: true
recipients:
- ops-team@example.com
- dev-team@example.com
thresholds:
error-rate: 0.05 # 错误率超过5%告警
response-time: 2000 # 响应时间超过2秒告警
3.6 application-prod.yml 示例(生产环境配置)
# application-prod.yml - 生产环境配置文件
# 说明:此配置仅在生产环境生效,包含生产环境的安全和性能优化配置
# 服务器配置(生产环境)
server:
port: 8080
servlet:
context-path: /api
tomcat:
max-threads: 500
min-spare-threads: 25
connection-timeout: 10000
# 生产环境启用 HTTPS
ssl:
enabled: true
key-store: classpath:keystore.p12
key-store-password: changeit
key-store-type: PKCS12
key-alias: tomcat
# Spring 配置
spring:
# 数据源配置(生产环境)
datasource:
url: jdbc:mysql://prod-db-cluster:3306/user_db_prod?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=true
username: ${DB_USERNAME} # 从环境变量获取
password: ${DB_PASSWORD} # 从环境变量获取
hikari:
maximum-pool-size: 50
minimum-idle: 10
connection-timeout: 20000
idle-timeout: 300000
max-lifetime: 1200000
# 生产环境连接池健康检查
connection-test-query: SELECT 1
# Redis 配置(生产环境集群)
redis:
cluster:
nodes:
- redis-cluster-1:7000
- redis-cluster-2:7001
- redis-cluster-3:7002
timeout: 2000
lettuce:
pool:
max-active: 20
max-idle: 10
min-idle: 5
max-wait: 2000ms
# 生产环境禁用 H2 控制台
h2:
console:
enabled: false
# 生产环境激活配置
profiles:
active: prod
# 生产环境自定义配置
user:
service:
cache-expire-time: 7200 # 2小时缓存
max-registration-count: 1000000
enable-email-verification: true
email-verification-expire-hours: 48
third-party:
sms:
api-url: https://prod-sms-api.example.com/send
api-key: ${SMS_API_KEY} # 从环境变量获取
timeout: 3000
# Actuator 配置(生产环境只暴露必要端点)
management:
endpoints:
web:
exposure:
include: health,info,metrics,prometheus
endpoint:
health:
show-details: when_authorized
# 禁用敏感端点
env:
enabled: false
beans:
enabled: false
# 日志配置(生产环境优化)
logging:
level:
root: WARN
com.example.user: INFO
org.springframework.web: WARN
org.hibernate.SQL: ERROR
file:
name: /var/log/user-service/user-service.log
max-size: 100MB
max-history: 90
# 安全配置
security:
jwt:
secret: ${JWT_SECRET} # 从环境变量获取
expiration: 259200000 # 3天
4. Spring Boot 2.4+ 新配置方式详解
4.1 为什么引入新方式?
- 简化配置:无需理解 Bootstrap Context 的复杂性
- 标准化:遵循 Spring Boot 标准配置机制
- 更好的工具支持:IDE 配置提示更准确
- 减少依赖:无需额外的 bootstrap 依赖
4.2 新方式配置示例
4.2.1 基础配置
# application.yml
spring:
application:
name: user-service
profiles:
active: dev
config:
import:
- optional:configserver:http://config-server:8888
4.2.2 多环境配置
# application.yml
spring:
application:
name: user-service
config:
import:
- optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888}
# application-dev.yml
spring:
config:
import:
- optional:configserver:http://dev-config-server:8888
# application-prod.yml
spring:
config:
import:
- configserver:http://prod-config-server:8888
4.2.3 多配置源
spring:
config:
import:
- optional:configserver:http://config-server:8888
- optional:classpath:local-overrides.yml
- optional:file:./external-config.yml
4.3 依赖配置
Maven(新方式无需额外依赖)
<!-- 只需要 Spring Cloud Config Client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
如果仍需使用 bootstrap.yml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
5. 注意事项与最佳实践
5.1 安全注意事项
# ❌ 错误做法:在配置文件中硬编码敏感信息
spring:
datasource:
password: "hardcoded_password"
# ✅ 正确做法:使用环境变量或配置中心
spring:
datasource:
password: ${DB_PASSWORD}
5.2 配置文件组织最佳实践
5.2.1 目录结构建议
src/main/resources/
├── application.yml # 公共配置
├── application-dev.yml # 开发环境
├── application-test.yml # 测试环境
├── application-staging.yml # 预发布环境
├── application-prod.yml # 生产环境
└── bootstrap.yml # Spring Cloud 引导配置(如需要)
5.2.2 配置分层原则
- 公共配置:放在
application.yml中 - 环境差异配置:放在对应的
application-{profile}.yml中 - 敏感配置:通过环境变量、配置中心或外部文件注入
- 引导配置:Spring Cloud 相关配置放在
bootstrap.yml中(或使用新方式)
5.3 YAML 语法注意事项
# ✅ 正确的缩进(2个空格)
server:
port: 8080
servlet:
context-path: /api
# ❌ 错误的缩进(混合使用空格和Tab)
server:
port: 8080 # 这会导致解析错误
# ✅ 字符串值建议使用引号(特别是包含特殊字符时)
description: "用户服务 - v1.0"
# ✅ 列表配置
management:
endpoints:
web:
exposure:
include:
- health
- info
- metrics
5.4 配置验证与测试
5.4.1 使用 @ConfigurationProperties 进行类型安全配置
// Java 配置类示例
@Data
@Component
@ConfigurationProperties(prefix = "user.service")
public class UserServiceProperties {
/**
* 用户缓存过期时间(秒)
*/
private int cacheExpireTime = 3600;
/**
* 最大用户注册数量
*/
private int maxRegistrationCount = 10000;
/**
* 是否启用邮箱验证
*/
private boolean enableEmailVerification = true;
/**
* 邮箱验证链接有效期(小时)
*/
private int emailVerificationExpireHours = 24;
}
5.4.2 配置文件验证方法
- 启动验证:应用启动时验证配置是否正确加载
- Actuator 端点:使用
/actuator/env查看实际生效的配置 - 环境测试:在各环境中充分测试配置覆盖行为
- 配置刷新:使用
/actuator/refresh动态刷新配置(如启用)
5.5 Spring Cloud 特定注意事项
5.5.1 bootstrap.yml 使用场景
- 传统方式:需要显式添加
spring-cloud-starter-bootstrap依赖 - 新项目推荐:使用
spring.config.import方式 - 迁移策略:旧项目可暂时保留 bootstrap.yml,新功能使用新方式
5.5.2 配置中心最佳实践
- 命名规范:
{application-name}-{profile}.yml - 版本控制:使用 Git 管理配置文件,合理使用分支和标签
- 安全管控:敏感配置通过 Vault 或环境变量管理
- 动态刷新:合理使用
@RefreshScope注解
6. 总结
6.1 配置文件选择指南
| 场景 | 推荐方案 | 说明 |
|---|---|---|
| Spring Boot 单体应用 | application.yml + application-{profile}.yml | 标准配置方式 |
| Spring Cloud 新项目 | spring.config.import + application.yml | 官方推荐方式 |
| Spring Cloud 旧项目 | bootstrap.yml + application.yml + application-{profile}.yml | 兼容现有架构 |
6.2 关键原则总结
- 安全性原则:绝不硬编码敏感信息,使用环境变量或配置中心
- 环境隔离原则:不同环境使用不同 profile,避免配置污染
- 配置覆盖原则:配置中心配置优先级高于本地配置
- 类型安全原则:使用
@ConfigurationProperties进行配置绑定 - 验证测试原则:确保配置在各环境中正确生效
- 现代化原则:新项目优先使用 Spring Boot 2.4+ 的新配置方式
6.3 版本兼容性建议
- Spring Boot 2.4+ & Spring Cloud 2020.0+:推荐使用
spring.config.import - Spring Boot 2.3 及以下:继续使用
bootstrap.yml - 混合环境:可根据团队熟悉度和项目需求选择合适方案
通过遵循这些最佳实践和理解配置加载机制,可以构建出安全、可维护、可扩展的 Spring Boot 和 Spring Cloud 应用配置体系。


被折叠的 条评论
为什么被折叠?



