Spring Boot 配置文件相关操作

2 篇文章 0 订阅
  • 默认配置文件名称: application
  • 常用后缀:properties yml yaml
  • 优先级: properties > yml > yaml

1. Spring Boot 读取配置文件

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

library: ZeroLibrary

borrower:
    name: cc01cc
    limit: 5

book:
    - ZeroBook
    - OneBook

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. 使用 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.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.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;
}

2. Spring Boot 动态切换配置

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

2.1. 配置文件

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

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

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
---

2.2. 激活配置文件

2.2.1. 使用配置文件激活

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

示例

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

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

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

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

1. file: ./config/  当前项目的 /config 目录下
2. file: ./         当前项目的根目录下
3. classpath:/config/   classpath 的 /config 目录下
4. classpath:/          classpath 的根目录下
  • 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零一魔法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值