springboot配置文件解析

一 前言

本篇是springboot的配置文件介绍篇,也是基础入门篇,今天补上,springboot系列基本已将齐全;

公众号:知识追寻者

知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)

二 springboot配置文件详解

2.1 配置文件概述

springboot的配置文件分为properties 和 yml 两种格式,其全局配置文件放在resources目录下,这2种配置文件 的本质与效果都一致,但知识追寻者更喜欢yml配置方式,原因是其语法简单,看桑去很简洁,可读性强;其配置文件名为 application.yml 或者 application.properties;

2.2 配置文件语法

properties 与 yml 语法 本质上都是 键值对(key-value)形式,所以很好理解,下面将介绍不同数据类型的语法;

基本语法就是直接写 key - value ;比如数字类型,字符串类型,布尔数据类型 写法形式如下

properties 语法示例,key 和value 之间使用 = 形成关系

name = zszxz

yml 语法示例, key 和value 之间使用 :形成关系

name: zszxz

在 java 类中使用@Value注解配合占位符合 ${}读取配置文件属性

示例

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

注意,不建议使用 双引号,因为需要转义;

下面示例中将都使用myl语法;

map 写法示例如下,注意子属性与父属性之间相差2个空格;

person:
  name: zszxz
  age:18

list 写法示例

support:[png,text,pdf]

2.3 使用 @ConfigurationProperties 读取配置文件属性

在文件上传和下载的场景中,为了使代码更具有可读性,就可以使用此方式,当然知识追寻者这边给出的是简单的示例

在 配置文件中定义

# 文件参数
zszxz:
  # 保存路径
  savePath: C:/mydata/generator
  # 下载路径
  downloadpath: C:/mydata/generator

使用 @Configuration 声明 FileConfig 为配置类, 使用 @ConfigurationProperties 注解 读取配置文件 前缀为 zszxz 的属性;

@Configuration
@ConfigurationProperties(prefix = "zszxz")
public class FileConfig {
    // 文件保存路径
    private String savePath;
    // 文件下载路径
    private String downloadpath;
    // 省略 set 和 get
}

这样配置完成就可以在其它java类中使用 spring的 IOC 注入对象方式进行属性调用;

比如

@Autowired
FileConfig fileConfig;

private void init(){
	String path = fileConfig.getSavePath();
}

2.4 配置文件的优先级

如果一个工程中存在多个配置文件,高优先级的配置文件会覆盖低优先级的配置文件

  1. 工程根目录的config目录:file:./config/
  2. 工程根目录:file:./
  3. 类路径的config目录:classpath:/config/
  4. 类路径:classpath:/ (推荐使用)

2.5 配置文件外部部署

在jar包所在目录新建config文件夹,然后放入配置文件;或者直接将配置文件在jar包的同级目录

当然还可以指定配置文件的位置

 java -jar myproject.jar --spring.config.name=myproject

或者

java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

参考链接

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files

你可能感兴趣的:(springboot)