Java Spring Boot 1.3.5:在application.properties文件中展开变量

Java Spring Boot 1.3.5:在application.properties文件中展开变量,java,spring,spring-boot,properties,Java,Spring,Spring Boot,Properties,我们使用的是Spring Boot 1.3.5,它使用@PropertySource(“文件:C:/tmp/application.properties”)加载外部应用程序.properties。以下是application.properties的外观: env=prod instance=EAST emailSubject=${env}-${instance}: An error occurred 代码能够查看/获取env和instance变量的正确值,但是emailSubject变量没有被

我们使用的是Spring Boot 1.3.5,它使用
@PropertySource(“文件:C:/tmp/application.properties”)
加载外部
应用程序.properties
。以下是
application.properties
的外观:

env=prod
instance=EAST
emailSubject=${env}-${instance}: An error occurred
代码能够查看/获取
env
instance
变量的正确值,但是
emailSubject
变量没有被替换。当我们在代码中打印它时,它显示

"${env}-${instance}: An error occurred"
如何正确替换
emailSubject
以显示

"prod-EAST: An error occurred"

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

您确定没有任何其他配置(Spring或Maven/Gradle)可能会干扰这一点吗?据我所知,这应该是可行的。另外,你如何在代码中打印它?嗨@thomas-kåsene,很抱歉反应太晚。1.项目2中没有其他.properties文件。我们使用的是maven,所以我们确实有pom.xml,但我不知道哪个库/属性可能会干扰这一点?3.我们有Spring批处理使用的配置xml,用于配置作业和另一个简单定义bean的配置xml,但似乎没有与configurationFor printing相关的属性,我们只是使用config类在应用程序启动时读取属性并打印它们(使用logger)。所有简单属性(如env、instance)都已正确打印。但是emailSubject是不进行替换的。是否可以提供一个实际的代码示例,在其中您尝试打印有问题的属性?@ThomasKåsene谢谢!!问题是,尽管这是一个Spring项目,编写代码的同事以旧的java方式(在静态块中使用java.util.properties)加载属性,因为他希望在加载这些属性之前先加载其他一些事情,而这在Spring中是没有发生的(或者我们的团队无法做到)。您的提示解决了这个问题,因为java.util.Properties只是一个简单的文件读取,带有键/值分离,如果不编写一些自定义调整,这是无法实现的。我必须在代码中处理它。请张贴你的答案,这样我就可以接受了!