Springboot的出现大大的节省的我们平时搭建框架的进度,但是Springboot项目部署一般推荐的是将其项目打成jar包,这样也算是回归到java最初的设计思想,但是jar有一个弊端就是每次有个新的版本,我们都需要将其先解压,然后再修改里面的配置文件,这样每次部署中总会遇到这样那样的问题。如果我们可以将部署文件进行外置,那这样及时每次就算是版本上有了新的变化,我们也不用重新部署,只需要替换一下jar包即可,这样可大大的避免部署过程中出错问题。下面我们就来说说如何将配置文件外置:

1、核心配置文件的配置

springboot提供以下四种位置的配置文件,此四种配置文件启动时不需要任何附加命令:

1、若application.properties与系统jar包在统一目录下的config目录下

2、若application.properties与系统jar包在统一目录下

3、若application.properties在系统jar包的resources根目录的config目录下

4、若application.properties在系统jar包的resources根目录下

以上4种的配置文件所在的位置,优先级依次从上往下,但是需要注意的一点是,spring启动加载的时候并不是加载了优先级高的配置文件,就不再加载优先级低的配置文件,而是一次性,将所有的配置文件全部加载进来,然后根据优先级进行合并覆盖。

除了以上四种之外,如果配置文件不想在以上四种的任何地方,而就是想自定义配置文件的位置,也可以,但是需要在启动的时候,指定默认的配置文件的位置,启动命令如下:

java -jar C:\Users\Desktop\newPackage\eomsdataupload-0.0.1-SNAPSHOT.jar    --spring.config.location=C:/Users/Desktop/copy/application.properties

spring.config.location是springboot默认的一个配置属性,该属性配置的值指向的就是核心配置文件所在的位置。

2、自定义配置文件的配置

自定义配置文件的配置位置,Spring为我们提供了:

@ConfigurationProperties注解,该注解有三个属性

locations:配置文件的位置(Springboot1.5版本以后用@PropertySource注解代替)
ignoreUnknownFields:当找不到locations时,是否直接抛出异常,默认的时false
prefix:配置文件的前缀

@ConfigurationProperties注解在1.5版本以后,不建议使用,可直接使用@PropertySource注解即可,如下:

@PropertySource(value = {"file:xxx.properties"}, encoding = "utf-8",ignoreResourceNotFound = false)

       OR

@PropertySource(value = {"classpath:xxx.properties"}, encoding = "utf-8",ignoreResourceNotFound = false)

需要注意的一点是,classpath后面跟的是当前系统的classpath的路径,而file后面跟的则是系统的绝对路径

这样就可以实现将自定义的配置文件外置了。

 

以上便是  关于Springboot项目加载主配置文件的顺序以及将自定义的配置文件外置的方法详解  ,如果不对之处,请指出,如有雷同之处,请联系楼主进行删除修改。