使用springboot项目进行服务发布时,如果没有特殊的要求,一般可以打成jar包,配合启动脚本(.sh或.bat文件),在实际项目中,我们会把项目配置文件application.properties抽出来,放到jar包外部,这样在不改动代码的的前提下,可以对一些常规设置进行改动(例如数据库连接信息、FTP服务器登录信息、常量),更改后重启项目即可生效,十分方便,对于配置文件的位置,常用的位置,主要有以下几个地方,优先级由高到低:
1.当前jar包同级文件夹config中;2.jar包同级的配置文件;3.jar包内部的配置文件;
验证方法如下:
(1)jar包内部的配置文件信息(端口9002):
(2)jar包同级的配置文件(端口9000)
(3)jar包同级目录config下的配置文件(端口9001)
启动当前jar包:
说明jar包同级目录config中配置文件生效,关掉项目,删除config文件夹下的配置文件,重新启动项目:
再删掉jar包同级配置文件,重新启动,jar包内部配置文件生效:
如果在这三个地方同时存在配置文件,它们不同的配置会互补,相同的配置,优先级高的会覆盖优先级低的,这个特性在生产中非常有用,我们可以在不改动代码,通过修改外部配置文件然后重启的方式进行一些修改,快速完成服务的重新发布。
此处需要注意:如果我们在jar包内部的配置文件指定了激活环境,例如:spring.profiles.active=dev,那么,在放置外部配置文件时,项目也会按照上述优先级顺序,去寻找指定的文件application-dev.properties,此时若config中放置的是application.properties,jar包同级放置的是application-dev.properties,则项目会加载jar包同级的配置文件,而不是config 中的配置文件。