Spring Boot配置文件

Spring Boot的核心是自动配置(或者叫默认配置),通过自动配置大大减少Spring项目的配置编写。但是在实际开发中,我们仍然需要根据需求来适当修改某些必要的参数配置,这时Spring Boot提供了两种格式的配置方便开发者进行修改。

  • applicaiton*.properties
  • application*.yml(或者application*.yaml)

1 application*.properties

1.1 Spring Boot内置属性

Spring Boot使用了一个全局的配置文件application.properties,放在src/main/resources目录下或者src/main/resources/config下。在 src/main/resources/config 下的优先级高 。Sping Boot的全局配置文件的作用是对一些默认配置的配置值进行修改。下面以修改Tomcat的访问端口为例:

1)建立application.properties配置

2)编写修改Tomcat端口属性

Tomcat的默认是8080,改为8888

3)运行引导类,访问端口已经改变

除了Tomcat端口以外,Spring Boot还定义了大量的内置属性,以下链接为Spring Boot官方提供的参考:

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

1.2 自定义属性

1)基本类型

nickname=eric
age=20

2)JavaBean类型

user.nickname=eric
user.age=20

3)数组/List集合

user.list=eric,jack,rose

或者

user.list[0]=eric
user.list[1]=jack
user.list[2]=rose

4)Map集合

user.map={nickname:'eric',age:20}

或者

user.map.nickname=eric
user.map.age=20

1.3 Profile多环境配置

当应用程序需要部署到不同运行环境时,一些配置细节通常会有所不同,最简单的比如日志,生产日志会将日志级别设置为WARN或更高级别,并将日志写入日志文件,而开发的时候需要日志级别为DEBUG,日志输出到控制台即可。如果按照以前的做法,就是每次发布的时候替换掉配置文件,这样太麻烦了,Spring Boot的Profile就给我们提供了解决方案,命令带上参数就搞定。

这里我们来模拟一下,只是简单的修改Tomcat端口来测试:

1)建立不同环境的application.properties文件

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

2)每个文件里面的Tomcat访问端口不同

在原来的application.yml里,指定需要激活的配置

3)运行引导类,查看结果

从结果看到,激活的配置是application-dev.yml。

 

源码下载:https://pan.baidu.com/s/1nOe_TvwPQFwOWjUM5O57Mw

2 application*.yml

1.1 yml格式简介

yml或yaml所表示的YAML Ain’t Markup Language,YAML是一种简洁的非标记语言,文件名后缀为yml,java中经常用它描述配置文件application.yml。YAML以数据为中心,比json/xml等更适合做配置文件。使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。

在yml之前使用最多的配置文件形式是xml和properties文件。xml文件太过繁琐,看过的人都知道,想要新加一个配置节点的话还需要包含在<>标签里;而properties配置文件没有了标签,不过当你的配置有很多层级的时候,写完之后你会发现会有大量重复的代码。而yml/yaml文件结合了两者的优势,当你新增节点配置的时候,不需要标签,在写多层级配置的时候也不会产生重复代码。

1.2 yml格式书写规则

  1. 大小写敏感
  2. 使用缩进表示层级关系
  3. 禁止使用tab缩进,只能使用空格键
  4. 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。
  5. 使用#表示注释
  6. 字符串可以不用引号标注

1.3 Spring Boot内置属性

yml格式也修改Spring Boot默认的属性配置,如下:

1.3 自定义属性

yml格式也可以自定义丰富的数据类型

1)基本类型

nickname: eric
age: 20

 注意:属性值大小写敏感

2)JavaBean类型

user:
  nickname: eric
  age: 20

3)数组/List集合

users:
  list:
  - eric
  - jack
  - rose

4)Map集合

user:
  map: {nickname: erci,age: 20}

1.4 Profile多环境配置

yml格式也可以定义不同环境的配置,在启动时指定环境配置

1)定义不同环境的yml配置

2)指定环境名称

3)运行测试

从结果可以看到,使用的是application-prod.yml配置。

 

源码下载:https://pan.baidu.com/s/17Ns9NGX2pkISsfl_vrkeZQ