Spring 引导 - 不解析 application.properties 文件中的占位符

Spring Boot - Do not resolve placeholders in the application.properties file

我正在使用 Spring 使用 Camel 框架启动。

我需要保存一个 属性 例如:

output.file=file://C:/Users/bfrisco/Desktop/output?fileName=${headers.fileName}

我需要这个原始字符串。我不想 Spring 尝试解析 ${headers.fileName},我想要的正是我输入的文本。启动我的应用程序时,我会收到此错误:

Could not resolve placeholder 'headers.fileName'

这个值是动态的,会在运行时发生变化。 Camel 将以不同于 Spring 的方式解释此 属性。我一直无法找到一种方法来阻止 spring 在启动时尝试解释它。

我有这个可行的解决方法,但它并不理想,我觉得有更好的方法:

# Inserted a ! between so Spring does not interpret it
output.file=file://C:/Users/bfrisco/Desktop/output?fileName=$!{headers.fileName}

@Value("${output.file}")
private String outputFile;

@PostConstruct
public void init() {
    outputFile = outputFile.replaceAll("!", "");
}

有没有办法在每个 class 需要使用这些值的情况下不实施此解决方法来解决此问题?

你可以用

来逃避它
output.file=file://C:/Users/bfrisco/Desktop/output?fileName=#{'$'}{headers.fileName}