Spring 启动 spring.config.additional-location 作为相对路径

Spring Boot spring.config.additional-location as relative path

我有一个 Spring 具有这种结构的引导项目:

- /my-config
    - production-settings.yml
    - local-settings.yml
- /src
    - /main
        - /java
            - (the usual Java stuff)
        - /resources
            - application.yml

这是我的 application.yml:

my.personal.value: ${MY_PLACEHOLDER}

我使用 local-settings.yml:

中定义的占位符
MY_PLACEHOLDER: something

有人可以告诉我如何将 spring.config.additional-location 与文件 local-settings.yml 的相对路径一起使用,以便可以解析占位符。

谢谢。

您可以使用@PropertySource("file:./my-config/local-settings.yml")测试相对路径,看看是否加载了my.personal.value

@Configuration
// If the relative path is valid, just comment the PropertySource.
// @PropertySource("file:./my-config/local-settings.yml") 
public class MyPersonConfig {
    @Value("${my.personal.value}")
    private String value;

    @PostConstruct
    void run() {
        System.out.println(value);
    }
}

如果它工作正常,您可以设置 JVM 选项并启动您的 jar。更改 local-settings.ymlproduction-settings.yml 以进行测试。

java -jar -Dspring.config.additional-location=file:./my-config/local-settings.yml build/libs/your.jar

完整代码为here.