如何在春季YAML配置中逃脱SpEL美元符号?
在Spring YAML配置文件中,我需要有一个参数,如
csv:
file:
pattern: /some/path/${app-name}.csv
其中,Java代码在运行时动态替换,我不希望Spring在启动时替换它。${app-name}
为了实现这一点,我需要对角色进行转义,这样Spring就不会将其解释为SpEL。$
以下答案在 YAML 中不起作用:
我尝试了所有组合,例如
pattern: /some/path/\${app-name}.csv
pattern: "/some/path/\${app-name}.csv"
pattern: /some/path/#{'$'}{app-name}.csv
pattern: "/some/path/#{'$'}{app-name}.csv"
并且它们都没有生成包含所请求字符串的变量,带有美元符号但没有转义字符。
请注意,它是 YAML 配置。在 YAML 文件中,是行注释字符,从此字符开始的所有内容都将被忽略。如果我使用 ,则传递给字符串。#
\#
\
新增:自2008年6月25日以来,春季项目开放问题9628已开放:
目前没有办法注入一个${...}表达式,它不会被PropertyPlaceholderConfigurer拾取。理想情况下,我们应该能够注入一个包含 ${...} 的字符串,以便以后在其目标 Bean 中使用,而无需 PropertyPlaceholderConfigurer 的参与。