在项目外的配置文件夹中自定义yaml配置文件(Spring)

我有一个项目,有一些配置文件。我需要将它们外部化,以允许用户编辑它们。这是一个spring boot应用程序,我的文件是yaml格式的。

这不是application.yaml,而是一些名字不同的自定义文件。

我使用Bean注释。例如,我的一个Bean看起来像这样。

@Configuration
@ConfigurationProperties
@PropertySource(value="globalConfiguration.yaml", factory = YamlPropertySourceFactory.class)
public class GlobalConfiguration {
//some fields
//accessors
}

当文件在src/main/resources中时,它工作得很好,但一旦构建,它就会读取jar中的文件(这很正常)。我想做的是优先读取lib文件夹附近的配置文件中的yaml文件,就像这样。

 - bin
 - config
       globalConfiguration.yaml
 - lib
       myApp.jar

我试着使用参数–spring.config.location=“classpath:./config/”(以及/./config和././config和/config…),但没有任何效果,我有这个错误。

***************************
APPLICATION FAILED TO START
***************************

Description:

Config data location 'classpath:/./config/' does not exist

Action:

Check that the value 'classpath:./config/' is correct, or prefix it with 'optional:'

现在我试着把我的配置文件添加到classpath,像这样。

set CLASSPATH=%APP_HOME%\config\*;%APP_HOME%\lib\myJar.jar;someDepencies.jar
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %MYAPP_OPTS%  -classpath "%CLASSPATH%" my.Main.Class %*

这是gradle在我构建项目时生成的bat,所以我只是在classpath变量中加入了%APP_HOME%\config*;。但这并没有改变什么。


StackOverflow:custom yaml configuration files in a config folder outside the project (Spring) - Stack Overflow