跳转至

Spring Boot配置

定义

Spring Boot使用一个全局的配置文件来配置应用程序的各种设置。配置文件可以是properties格式或YAML格式。Spring Boot支持多种配置方式,并且有严格的加载顺序。

作用

Spring Boot的配置系统具有以下优势: 1. 支持多种配置格式(properties和YAML) 2. 灵活的配置加载顺序 3. 支持多环境配置 4. 自动配置减少手动配置 5. 支持运行时动态配置 6. 类型安全的配置绑定

例子

Properties格式配置

# application.properties
server.port=8080
server.servlet.context-path=/api

spring.application.name=my-app
spring.profiles.active=dev

# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

YAML格式配置

# application.yml
server:
  port: 8080
  servlet:
    context-path: /api

spring:
  application:
    name: my-app
  profiles:
    active: dev
  datasource:
    url: jdbc:mysql://localhost:3306/testdb
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

自定义配置类

@Component
@ConfigurationProperties(prefix = "my.app")
@Data
public class MyAppProperties {
    private String name;
    private String version;
    private String description;
    private Database database = new Database();

    @Data
    public static class Database {
        private String url;
        private String username;
        private String password;
    }
}

图表说明

graph TD
    subgraph Spring Boot配置系统
        subgraph 配置格式
            format1[Properties]
            format2[YAML]
        end

        subgraph 配置来源
            source1[配置文件]
            source2[环境变量]
            source3[命令行参数]
            source4[Java系统属性]
        end

        subgraph 配置特性
            feature1[多环境支持]
            feature2[自动配置]
            feature3[类型安全]
            feature4[动态配置]
        end
    end

    format1 --> format2
    source1 --> source2
    source2 --> source3
    source3 --> source4
    feature1 --> feature2
    feature2 --> feature3
    feature3 --> feature4

详细说明

配置加载顺序

  1. 命令行参数
  2. Java系统属性
  3. 操作系统环境变量
  4. application-{profile}.yml
  5. application.yml
  6. @Configuration注解类

多环境配置

# application.yml
spring:
  profiles:
    active: dev

---
spring:
  config:
    activate:
      on-profile: dev
server:
  port: 8080

---
spring:
  config:
    activate:
      on-profile: prod
server:
  port: 80

配置属性验证

@Component
@ConfigurationProperties(prefix = "my.app")
@Validated
@Data
public class MyAppProperties {

    @NotBlank
    private String name;

    @Min(1)
    @Max(65535)
    private int port;

    @Email
    private String email;
}

注意事项

  1. 配置文件命名规范
  2. 配置属性命名规范
  3. 敏感信息加密
  4. 配置文件的版本控制
  5. 配置文件的权限管理

    Spring Bootの設定システムは、アプリケーションの様々な設定を柔軟に管理できます。複数の設定形式や環境に対応し、開発者は効率的にアプリケーションを設定できます。