
当然了解,Spring Boot 的参数配置是其核心特性之一,也是它实现“约定大于配置”理念的关键。它极大地简化了传统 Spring 应用中繁琐的 XML 配置。
application.properties 与 application.ymlSpring Boot 默认使用这两种文件进行配置(二者选其一即可,.yml 更常用)。
application.properties (传统键值对格式)
server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
logging.level.com.example.demo=debug
application.yml (YAML 格式,层次感更强,推荐使用)
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secret
logging:
level:
com.example.demo: debug
YAML 注意事项:缩进必须使用空格,不能使用 Tab 键,冒号后面必须有一个空格。
Spring Boot 会从以下位置按从高到低的优先级加载 application 配置文件(高优先级的配置会覆盖低优先级的配置):
/config 子目录/config 包 (即 src/main/resources/config)src/main/resources)最佳实践:在开发时,将通用配置放在 src/main/resources/application.yml 中。在打包部署时,可以在 JAR 包所在目录创建一个 config 文件夹,里面放一个 application.yml 来覆盖开发环境的配置(如数据库连接),这样就实现了配置与代码分离。
除了配置文件,Spring Boot 还支持多种外部配置方式,优先级高于 application.yml。这在容器化部署(如 Docker)时尤其有用。
java -jar yourapp.jar --server.port=8888 --spring.datasource.url=jdbc:mysql://prod-server:3306/proddb
SPRING_DATASOURCE_URL 的环境变量(注意大小写和下划线)。
application.yml 中,通过 spring.profiles.active 属性来激活特定环境的配置。
application-{profile}.yml
application-dev.yml (开发环境)
application-test.yml (测试环境)
application-prod.yml (生产环境)
application.yml
spring:
profiles:
active: dev # 默认激活开发环境
激活方式:
java -jar yourapp.jar --spring.profiles.active=prod-Dspring.profiles.active=testexport SPRING_PROFILES_ACTIVE=prod@Value 注解 (适用于单个属性)
@Component
public class MyComponent {
@Value("${server.port}")
private int serverPort;
@Value("${app.message: Hello Default}") // 使用冒号指定默认值
private String message;
// ...
}
@ConfigurationProperties 注解 (推荐,用于绑定一组配置)
这是更类型安全、更面向对象的方式。
步骤 1:在 application.yml 中定义配置
app:
user:
name: "Alice"
age: 30
email: "alice@example.com"
hobbies:
- reading
- hiking
步骤 2:创建一个配置类来绑定这些属性
@Component
@ConfigurationProperties(prefix = "app.user") // 前缀是 app.user
@Data // Lombok 注解,自动生成 getter/setter
// 或者也可以手动写 getter 和 setter
public class UserProperties {
private String name;
private Integer age;
private String email;
private List<String> hobbies;
}
步骤 3:在需要的地方注入并使用
@Service
public class MyService {
@Autowired
private UserProperties userProperties;
public void doSomething() {
System.out.println("User name: " + userProperties.getName());
System.out.println("User hobbies: " + userProperties.getHobbies());
}
}
别忘了在启动类上添加 @EnableConfigurationProperties 注解(但如果你像上面一样在配置类上使用了 @Component,则不需要)。
# 服务器配置
server:
port: 8080
servlet:
context-path: /api # 应用上下文路径
# 数据源配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
# JPA 配置
jpa:
hibernate:
ddl-auto: update # 生产环境不要用 create-drop 或 update
show-sql: true
# 日志配置
logging:
level:
root: info
org.springframework.web: debug
com.example: trace
file:
name: logs/myapp.log # 输出到文件
# 自定义配置
myapp:
feature:
enabled: true
api-url: https://api.example.com
Spring Boot 的参数配置系统非常灵活和强大,其核心思想是:
@ConfigurationProperties 可以轻松地将一组配置映射到 Java Bean 上,是管理自定义配置的首选方式。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。