有的。Spring Boot 的参数配置是开发中非常核心的一部分,主要用于控制应用行为、环境切换、数据库连接、端口设置等。下面给你做一个比较系统的总结,适合写 Java 开发日记 / 技术博客。
【Java 开发日记】SpringBoot 参数配置详解
在使用 Spring Boot 开发项目时,经常需要配置各种参数,比如:
- 服务器端口
- 数据库连接
- 日志级别
- 第三方接口地址
- 环境配置(dev / test / prod)
SpringBoot 提供了一套非常灵活的配置体系。
一、常见配置文件
SpringBoot 默认支持两种配置文件:
1️⃣ application.properties
server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
特点:
- key=value 格式
- 简单直观
2️⃣ application.yml(推荐)
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456
优点:
- 层级结构清晰
- 可读性更好
二、参数读取方式
SpringBoot 提供多种方式读取配置。
1️⃣ @Value 注解
适合读取单个配置。
@Value("${server.port}")
private String port;
也可以设置默认值:
@Value("${server.port:8080}")
private String port;
如果没有配置:
默认使用 8080。
2️⃣ @ConfigurationProperties(推荐)
适合批量读取配置。
配置文件:
app:
name: demo
version: 1.0
Java 类:
@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig {
private String name;
private String version;
// getter setter
}
使用:
@Autowired
private AppConfig appConfig;
优点:
- 类型安全
- 结构清晰
- 适合大型项目
三、多环境配置
在实际开发中通常会有多个环境:
开发环境 dev
测试环境 test
生产环境 prod
SpringBoot 支持 Profile 配置。
1️⃣ 创建环境配置
application-dev.yml
application-test.yml
application-prod.yml
例如:
application-dev.yml
server:
port: 8081
application-prod.yml
server:
port: 80
2️⃣ 激活环境
在主配置文件中:
spring:
profiles:
active: dev
也可以通过 启动参数:
java -jar app.jar --spring.profiles.active=prod
四、配置优先级(重要)
SpringBoot 配置有严格的优先级。
从高到低:
1️⃣ 命令行参数
java -jar app.jar --server.port=9000
2️⃣ 系统环境变量
3️⃣ application.yml
4️⃣ application.properties
5️⃣ 默认配置
五、随机值配置
SpringBoot 可以生成随机值。
my:
secret: ${random.uuid}
其他:
${random.int}
${random.long}
${random.value}
例如:
token: ${random.uuid}
每次启动都会变化。
六、占位符引用
配置可以互相引用。
app:
name: demo
message: Welcome to ${app.name}
最终:
Welcome to demo
七、自定义配置类(企业常用)
实际项目中通常这样做:
配置文件:
oss:
endpoint: xxx
accessKey: xxx
secretKey: xxx
Java 类:
@ConfigurationProperties(prefix = "oss")
@Component
public class OssProperties {
private String endpoint;
private String accessKey;
private String secretKey;
}
这样项目中就可以直接使用:
@Autowired
private OssProperties ossProperties;
八、配置刷新(进阶)
如果项目使用 配置中心,可以动态刷新配置,比如:
- Spring Cloud Config
- Nacos
需要使用:
@RefreshScope
实现运行时更新配置。
九、常见配置示例
修改端口
server:
port: 8082
修改项目路径
server:
servlet:
context-path: /api
访问地址:
http://localhost:8082/api
日志级别
logging:
level:
root: INFO
com.example: DEBUG
十、SpringBoot 配置最佳实践
推荐方式:
1️⃣ 使用 application.yml
2️⃣ 使用 @ConfigurationProperties
3️⃣ 按环境拆分配置
4️⃣ 敏感信息放配置中心
示例结构:
config
├── application.yml
├── application-dev.yml
├── application-test.yml
└── application-prod.yml
✅ 一句话总结
在 Spring Boot 中:
- 配置文件负责 应用参数管理
@Value适合 简单读取@ConfigurationProperties适合 复杂配置Profile实现 多环境管理
如果你愿意,我可以再给你整理一份 《SpringBoot 参数配置最全总结(面试级)》,包括:
- 20 种配置读取方式
- 配置优先级原理
- 自动配置源码解析
- 真实大厂项目配置结构
很多 **Java 面试(阿里 / 字节 / 腾讯)**都会问这些。