关于配置文件
springboot有两种格式的配置文件,即yaml
和properties
,两种配置文件在功能上完全等效。
相对于 properties而言,yaml
更加简洁明了,而且使用的场景也更多。除了简洁,yaml
还有另外一个特点,就是yaml
中的数据是有序的,properties
中的数据是无序的
关于yaml
以及properties
详细使用方法,我们稍后开贴专门说明,这里不再赘述。
配置文件加载顺序
默认情况下,springboot应用会依次从以下位置加载配置文件:
- 项目根目录下的
config
文件夹 - 项目根目录
resources
目录下的config
文件夹resources
目录
这四个是默认的位置,我们可以简单验证一下。
在项目根目录下config文件夹下的application.yaml,设置端口为6666
server:
port: 6666
启动项目,我们可以看到,默认端口已经是6666
自定义配置文件位置
除了上述的四个默认加载配置文件的位置,我们也可以自定义文件位置。通过
pring.config.location
即可指定加载配置文件位置
Idea调试时动态指定配置文件位置
举个栗子,我在resources
文件夹下面建立一个blog
文件夹,并将 application.yaml
文件放到blog
文件夹下,同时设置端口为6666
- 加入创建配置文件,并按照如下设置
修改Idea配置信息
spring.config.location=classpath:/blog/
一定要注意配置文件位置,最后的/
不能少,否则会报错
- 运行程序,我们会发现端口变成了
6666
运行jar包是动态指定配置文件位置
除了在Idea调试,我们终归要将程序发不成jar
包,那么jar
包如何加载配置文件呢?
我们是以上面的程序进行说明,此时,我们将配置文件单独拿出来,同时将resource\blog
文件夹删掉。并通过
mvn package
将程序打包成jar
包,打包后的jar
包名称为properties-0.0.1-SNAPSHOT.jar
,然后我们将jar包
及application.yaml
文件放到一起。
我们通过
java -jar properties-0.0.1-SNAPSHOT.jar --spring.config.location = ./
运行程序,通过控制台,我们可以看到此时端口仍然是6666
,证明已经加载我们的配置文件。
自定义配置文件名
自定义配置文件名的方式,与自定义配置文件的方式类似,同时两个命令可以一起使用。
spring.config.name
这里只展示一下用java -jar
命令运行的方式,我把application.yaml
文件改成blog.yaml
,内容不变。
java -jar properties-0.0.1-SNAPSHOT.jar --spring.config.location=./ --spring.config.name=blog
可以看到,程序依然以6666
端口成功启动。
自定义配置文件加载顺序
上面说了工程内的配置文件就自定义配置文件,如果自定义配置文件与默认配置文件同时存在,那么springboot如何加载呢。
- 新建工程
- 修改application.propertes端口号改成1234
- package打包工程
- 使用java -jar 命令加载配置文件,并制定端口为4321
我们看到,程序先加载了环境变量中的配置信息
写的很想器
谢谢分享!
我自己一直在用