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}
我正在使用 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}