配置文件

SpringBoot 配置文件为:

  • application.properties。形式:main_key.sub=value。不能写注释。
  • 【推荐】application.ymlapplication.yaml。格式采用 YAML 格式,可以写注释。

外部配置的属性注入方法:

  • 使用 @Value 注解通常用于外部配置的属性注入,具体用法为:@Value("${配置文件中的key}")
  • 但是遇到复杂参数名的话,其注解可能会比较长且繁琐。我们可以使用 @ConfigurationProperties 简化开发。

@Value@ConfigurationProperties 的不同点:

  • @Value 注解只能一个一个的进行外部属性的注入。
  • @ConfigurationProperties 可以批量的将外部的属性配置注入到 bean 对象的属性中。

示例

1
2
3
4
5
# application.yml
key:
sub:
sub1: abc
sub2: cdf

@Value 方式:

1
2
3
4
5
6
7
@Component
public class SomeoneClass{
@Value("${key.sub.sub1}")
private String sub1;
@Value("${key.sub.sub2}")
private String sub2;
}

使用 @ConfigurationProperties 方式,注意成员变量的命名要和配置文件中的键名对应:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 新建一个配置类
@Data // Lombok
@Component // 添加到IOC容器中
@ConfigurationProperties(prefix = "key.sub")
public class MyKeyProperties{
private String sub1; // 注意:名称要和配置文件中的键名对应
private String sub2;
}

//------ 使用方法 ---------
public class SomeoneClass{
@Autowired // 注入
private MyKeyProperties myKeyProperties;

String sub1 = myKeyProperties.getSub1(); // Lombok 提供类get方法
String sub2 = myKeyProperties.getSub2();
}

可选操作:pom.xml 引入以下依赖,用于帮助 IDEA 识别 @ConfigurationProperties 中的 prefix,消去 IDEA 的警告,并且 IDEA 提供配置的自动补全。

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>

这个依赖安装与否都不影响程序的正确运行。

配置方式

SpringBoot 除了支持配置文件属性配置,还支持 Java 系统属性和命令行参数的方式进行属性配置。

  • Java 系统属性:-Dserver.port=9000
    • IDEA 中在 Run/Debug Configurations -> 你的 Spring 项目 ->VM options 中配置。
    • java 指令运行 jar 包:java -Dserver.port=9000 -jar your.jar
  • 命令行参数:--server.port=10010
    • IDEA 中在 Run/Debug Configurations -> 你的 Spring 项目 -> Program arguments 中配置
    • java 指令运行 jar 包:java -jar your.jar --server.port=10010

SpringBoot 同时启动多项目: https://blog.csdn.net/weixin_44606481/article/details/132694434

SpringBoot 项目打包操作依赖

进行打包时需要引入 spring-boot-maven-plugin。不过基于官方骨架创建项目,会自动添加这个插件。

关于 SpringBoot 项目的部署方式详见本站文章:SpringBoot 项目的上线方式

配置优先级

多个配置文件同时存在时,配置文件优先级从高到低依次为:

  • application.properties
  • application.yml
  • application.yaml

虽然 springboot 支持多种格式配置文件,但是在项目开发时,推荐统一使用一种格式的配置(yml 是主流)。

属性配置方式的优先级从高到低依次为:

  • 命令行参数
  • Java 系统属性

五种配置方式的优先级从高到低依次为:

  1. 命令行参数
  2. Java 系统属性
  3. application.properties
  4. application.yml
  5. application.yaml

官方文档:核心特性 (springdoc.cn)

更多

关于读取配置文件更骚的操作详看本站文章:单例模式的应用——为 Java 程序应用全局配置

本文参考