我有一个项目,有一些配置文件。我需要将它们外部化,以允许用户编辑它们。这是一个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