一 前言
本篇是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 配置文件的优先级
如果一个工程中存在多个配置文件,高优先级的配置文件会覆盖低优先级的配置文件
- 工程根目录的config目录:
file:./config/
- 工程根目录:
file:./
- 类路径的config目录:
classpath:/config/
- 类路径:
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