SpringBoot启动时无法加载自定义配置文件(根据环境不同,本地和生产)
问题背景
springboot启动的时候总是报找不到ftp_upload.properties.
估计同学该诧异了,明明就是在项目下的config下,为啥找不到呢?我们都知道springboot的配置文件启动加载顺序是:
第一: ./config/(项目根目录下的config文件夹下的配置文件)。
第二:./(项目根目录下的配置文件)。
第三:classpath下的config文件夹下的配置文件。
第四:classpath下的配置文件。
这四个,是从高到低的顺序排列,一是优先级最高的,也就是项目根目录下的config下配置文件。
这部分知识可以看另外的博客:springboot配置文件加载顺序 - wang_longan - 博客园
但是为啥启动报错找不到呢?下面是解决办法
解决办法
<resource>
<directory>config</directory>
<includes>
<!-- 根据目录下的文件配置需要扫描的文件类型 -->
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<!-- 根据目录下的文件配置需要扫描的文件类型 -->
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
这时本地的启动,应该是没问题了。
这个文件也能找到了。
可以看到classes下也有config下的文件了。
很顺利,但是大部分的文档都是言尽于此。我遇到了在linux中,发布项目,config下仍旧找不到ftp_upload.properties文件。
以下是linux的目录
在bin下start.sh启动的时候,会到这个目录下启动java -jar XXX.jar
经过测验,把引用ftp_upload.properties的java代码先注释,然后修改了linux的项目下config下的yml文件内端口号,是可以启动的,那就是启动可以找到application-dev.yml文件,但是找不到ftp_upload.properties文件,这么奇怪呢?之后找到了一个配置:
然后就能顺利找到 ftp_upload.properties这个文件了。
修改ftp_upload.properties下的配置信息,也能顺利拿到最新的修改信息。
大功告成。