• Spring Boot 配置文件相关操作


    • 默认配置文件名称: application
    • 常用后缀:properties yml yaml
    • 优先级: properties > yml > yaml

    1. Spring Boot 读取配置文件

    假设配置文件 application.yml 内容如下

    library: ZeroLibrary
    
    borrower:
        name: cc01cc
        limit: 5
    
    book:
        - ZeroBook
        - OneBook
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    1.1. 使用 @Value 读取配置

    // Value 中的值需要和配置文件的键一致
    // 变量名的选取和配置文件直接关系
    @Value("$(library)")
    public String library; // library = "ZeroLibrary"
    
    @Value("$(borrower.name")
    public String borrowerName; // borrowerName = "cc01cc"
    
    @Value("$(book[0]")
    public String zeroBook; // zeroBook = "ZeroBook"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    *不利于获取大量的值

    1.2. 使用 Environment 读取配置

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.core.env.Environment;
    
    @Autowired
    private Environment env;
    
    String library = env.getProperty("library");
    String borrowerName = env.getProperty("borrow.name");
    String zeroBook = env.getProperty("book[0]");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    1.3. 使用 @ConfigurationProperties 读取配置

    *配置和类绑定

    1.3.1. 添加依赖

    Configuration Metadata: https://docs.spring.io/spring-boot/docs/2.7.1/reference/html/configuration-metadata.html#appendix.configuration-metadata.annotation-processor

    <!-- 在写配置文件的时候提供提示 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1.3.2. 代码示例

    创建对象类 Borrower

    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    @Component
    // 前缀用于指定下方变量所对应键的层级归属
    @ConfigurationProperties(prefix = "borrower")
    public class Borrower {
        // 变量名需要和配置文件中的键一致
        // 类名和配置文件中的键无直接关系
        private String name;
        private int limit;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2. Spring Boot 动态切换配置

    原因:不同场景(开发,测试,生产)使用的配置文件不同,如:数据库地址,服务器端口等,每次打包修改配置文件会相对繁琐

    2.1. 配置文件

    2.1.1. 使用多个配置文件的方式

    resources
    │
    ├─ application.properties // 默认配置文件
    │
    ├─ application-dev.properties // 添加后缀,自定义配置文件(开发环境,常用dev)
    │
    ├─ application-test.properties // test 常用于测试环境
    │
    └─ application-pro.properties // pro 常用于生产环境
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.1.2. 使用单个 yml 文件(properties 文件不适用)

    使用 --- 分隔配置文件

    并使用 spring.config.activate.on-profile 指定每个配置文件(2.4 版本之前是 spring.profiles)

    示例

    ---
    server:
      port: 8081
    
    spring:
      config:
        activate:
          on-profile: dev
    ---
    server:
      port: 8082
      
    spring:
      config:
        activate:
          on-profile: test
    ---
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.2. 激活配置文件

    2.2.1. 使用配置文件激活

    使用 spring.profiles.active 激活配置文件

    示例

    # 在默认配置文件 application 中使用
    spring.profiles.active=dev
    
    • 1
    • 2

    2.2.2. 使用虚拟机参数激活

    虚拟机参数(VM options)添加 -Dspring.profiles.active=dev

    • -D 开头,后接参数和值
    • 会覆盖配置文件参数

    2.2.3. 使用命令行参数激活

    命令行参数(Program arguments)添加 --spring.profiles.active=dev

    • -- 开头,后接参数和值
    • 会覆盖配置文件参数

    示例

    java -jar xxx.jar --spring.profiles.active=dev
    
    • 1

    3. 内部配置文件的加载顺序

    依次从以下位置加载配置文件(由上往下,优先级由高到低)

    1. file: ./config/  当前项目的 /config 目录下
    2. file: ./         当前项目的根目录下
    3. classpath:/config/   classpath 的 /config 目录下
    4. classpath:/          classpath 的根目录下
    
    • 1
    • 2
    • 3
    • 4
    • Maven 中 resourcesjava 目录都会打包入 classpath 根目录
    • 项目根目录的文件默认不会被打包

    4. 常用外部配置文件的加载

    Spring Boot Reference Documentation - features.external-config: https://docs.spring.io/spring-boot/docs/2.7.1/reference/htmlsingle/#features.external-config

    1. 使用 spring.config.loaction 参数加载外部配置文件
    2. 在打包后的 jar 包 的同级目录放 application.properties/config/application.properties 配置文件(优先级高于包内配置文件)

    5. 参考

    1. 黑马程序员SpringBoot教程_哔哩哔哩_bilibili
      https://www.bilibili.com/video/BV1Lq4y1J77x

  • 相关阅读:
    机器学习(20)---神经网络详解
    全文检索&ElasticSearch简介
    YB4058是一款经济高效、完全集成的高输入电压单电池锂离子电池充电器
    C++语言的return语句的说明
    总结一下常见的序列标注任务的标注体系
    String64类的设计思想
    计算机毕业设计(附源码)python员工宿舍管理系统
    【Pytorch深度学习开发实践学习】【AlexNet】经典算法复现-Pytorch实现AlexNet神经网络(1)model.py
    Linux系统OpenSSH_9.7p1升级详细步骤
    LabVIEW Arduino TCP/IP远程智能家居系统(项目篇—5)
  • 原文地址:https://blog.csdn.net/m0_49270962/article/details/125610855