gpt4 book ai didi

java - 如何在 Spring YAML 配置中转义 SpEL 美元符号?

转载 作者:行者123 更新时间:2023-11-30 10:21:19 25 4
gpt4 key购买 nike

在 Spring YAML 配置文件中,我需要有一个像这样的参数

csv:
file:
pattern: /some/path/${app-name}.csv

其中 ${app-name} 在运行时被 Java 代码动态替换,我不希望 Spring 在启动时替换它。

为此,我需要对 $ 字符进行转义,这样 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 文件中,# 是行注释字符,从这个字符开始的所有内容都将被忽略。如果我使用 \#,则 \ 会传递给字符串。

添加:有一个 Spring project open issue 9628自 2008 年 6 月 25 日开始营业:

There is presently no way to inject a ${...} expression that won't be picked up by PropertyPlaceholderConfigurer. Ideally we should be able to inject a string that contains ${...} for later use in its target bean without involvement from PropertyPlaceholderConfigurer.

最佳答案

我有同样的问题,我只是找到了 dumb 聪明的解决方案定义一个名为 dollarSign 或简称 ds 的属性。

ds: "$"

然后像这样使用它,${ds} 将在运行时替换为 $

csv:
file:
pattern: /some/path/${ds}{app-name}.csv

当它起作用时有点有趣。

关于java - 如何在 Spring YAML 配置中转义 SpEL 美元符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47929315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com