不工作 spring.config.additional-location

行家:


<profiles>

    <profile>

        <id>local</id>

        <activation>

           <activeByDefault>true</activeByDefault>

        </activation>

        <properties>

            <active.spring.profile>local</active.spring.profile>

        </properties>

    </profile>

</profiles>

应用程序属性:


spring.profiles.active=@active.spring.profile@

spring.config.additional-location=classpath:/profile/application-${spring.profiles.active}.properties

在此之后我无法从 src/main/resources/application-local.properties 获得价值,其中包含test.prop=123


@Service

public class TestProps {


    @Value("${test.prop}")

    String testProp;


    @PostConstruct

    void run() {

        System.out.println(testProp);

    }

}

错误在哪里?或者这是一个错误?


慕姐4208626
浏览 1240回答 2
2回答

缥缈止盈

属性:spring.config.additional-location必须像这样作为 JVM 的参数提供:java -Dspring.config.additional-location=classpath:/profile/application-local.properties -jar whatever.jar。把它放进去没有意义application.properties。从文档中:或者,当使用 spring.config.additional-location 配置自定义配置位置时,除了默认位置之外,还会使用它们。在默认位置之前搜索其他位置。由于在默认位置之前搜索了附加位置,因此必须更早地提供它们,因此您无法将它们放入application.properties

慕桂英546537

additional-location 确实不属于 application.properties,因为 Spring 不会从那里解释它。它需要在默认配置文件之前加载其他配置文件。另一方面,在 maven spring boot 插件中设置默认的附加位置很方便。这样一来,就可以在项目源之外设置安全敏感信息,并且不会出现在源存储库中。例如,客户端安全配置可以读取:app:&nbsp; client:&nbsp; &nbsp; ssl:&nbsp;&nbsp; &nbsp; &nbsp; keystore: path/to/keystore&nbsp; &nbsp; &nbsp; keystore-password: the-keystore-password&nbsp; &nbsp; &nbsp; key-password: the-key-password&nbsp;可以跳过 src/main/resources 中的默认 application.yml,而附加配置可以提供每个活动配置文件的值并确保它们在本地计算机上的安全。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java