【问题标题】:Spring Boot 1.3.5: expanding variables within application.properties fileSpring Boot 1.3.5:扩展 application.properties 文件中的变量
【发布时间】:2017-05-05 21:03:14
【问题描述】:

我们使用的是 Spring Boot 1.3.5,它使用 @PropertySource("file:C:/tmp/application.properties") 加载外部 application.properties。这是application.properties 的样子:

env=prod
instance=EAST
emailSubject=${env}-${instance}: An error occurred

代码能够查看/获取envinstance 变量的正确值,但emailSubject 变量没有被替换。而当我们在代码中打印出来的时候,会显示

"${env}-${instance}: An error occurred"

如何让emailSubject被正确替换为显示

"prod-EAST: An error occurred"

【问题讨论】:

  • 您确定没有任何其他配置(Spring 或 Maven/Gradle)可能会干扰此操作吗?据我所知,这应该有效。还有,如何在代码中打印出来?
  • 嗨@thomas-kåsene,很抱歉回复晚了。 1. 项目中没有其他 .properties 文件 2. 我们使用的是 maven,所以我们确实有 pom.xml,但因此我不知道哪个库/属性可能会干扰这个? 3. 我们确实有 Spring Batch 使用的配置 xml - 配置作业和另一个简单定义 bean 的配置 xml - 但似乎没有与配置相关的属性
  • 对于打印,我们只是使用我们的配置类读取属性并在应用程序启动时打印它们(使用记录器)。所有简单的属性,如 env、instance 都被正确打印。但是 emailSubject 是不做替换的。
  • 是否可以提供一个实际的代码示例来尝试打印相关属性?
  • @ThomasKåsene 谢谢!!问题是即使它是一个 Spring 项目,编写代码的同事以旧的 java 方式加载属性(在静态块中使用 java.util.properties),因为他想在其他一些事情之前加载这些属性,这春季没有发生(或者我们的团队无法做到)。您的提示解决了这个问题,因为 java.util.Properties 只是一个读取键/值分离的简单文件,如果不编写一些自定义调整就无法实现。我将不得不在代码中处理它。请发表您的答案,以便我接受!

标签: java spring spring-boot properties


【解决方案1】:

如果不知道更多关于它是如何设置的,并且看到你发布的属性文件的内容是有效的,我将不得不假设内容的读取或使用方式有问题。

【讨论】:

    猜你喜欢
    • 2016-01-20
    • 2022-07-21
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 2016-06-08
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多