springboot默认配置文件可以配置在resources文件夹中,文件名为application.properties或application.yml,
打包发布之后,以java -jar的形式去运行,因为配置文件也打包在了jar文件中,所以运维要修改配置什么的就不是很方便了,因此考虑将配置文件从jar包中抽出来,
可以在运行时候手动指定配置文件,比如 命令行中直接指定: java -jar -Dspring.config.location=D:\config\config.properties springbootrestdemo-0.0.1-SNAPSHOT.jar
但是这样还要去看路径,不同的服务器可能配置的路径不一样还得改,也挺麻烦的。
因此项目中做了一个约定:外部配置文件名称统一叫做app.properties,SpringBootApplication程序启动时,获取到当前执行程序的jar绝对目录路径,将app.proeprties跟要执行的jar文件放置到同级目录中,
当然也可以指定自己的目录,比如同级目录下新加个config文件夹统一放置配置文件也是可以的,这个主要决定于你想要从哪里加载配置文件了。
于是问题就变成了 获取当前执行的jar文件的目录路径了,这个也很简单啦,比如如下:
String path = ClassUtils.getDefaultClassLoader().getResource("").getPath();
获取到的路径在做一定处理就能得到jar文件所在目录了,这里要注意windows和linux之间的额路径差异了,可能需要根据不同的操作系统坐下兼容处理