Skip to content

SpringBoot 配置文件详解

TIP

SpringBoot 支持多种配置方式,按优先级顺序覆盖,灵活适应不同环境。

配置文件加载顺序

application.properties          # 项目根目录
application.yml                 # 项目根目录
config/application.properties   # config 子目录
config/application.yml          # config 子目录

YAML 配置

yaml
server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db?useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      maximum-pool-size: 20
      minimum-idle: 5

  redis:
    host: localhost
    port: 6379
    password:
    timeout: 3000
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0

多环境配置

yaml
# application.yml(主配置)
spring:
  profiles:
    active: dev

---
# application-dev.yml
server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/dev_db

---
# application-prod.yml
server:
  port: 80
spring:
  datasource:
    url: jdbc:mysql://prod-server:3306/prod_db

@Value 注入

yaml
# yaml
app:
  name: MyApp
  version: 1.0.0
  servers:
    - server1.example.com
    - server2.example.com
java
@Component
public class AppConfig {

    @Value("${app.name}")
    private String appName;

    @Value("${app.version}")
    private String version;

    @Value("#{'${app.servers}'.split(',')}")
    private List<String> servers;
}

@ConfigurationProperties

yaml
# yaml
app:
  jwt:
    secret: my-secret-key
    expiration: 86400000
java
@Component
@ConfigurationProperties(prefix = "app.jwt")
@Data
public class JwtProperties {
    private String secret;
    private long expiration;
}

TIP

推荐使用 @ConfigurationProperties 代替 @Value,可以批量绑定配置、支持校验、更易维护。