【发布时间】:2021-05-22 15:35:53
【问题描述】:
我有一个配置属性需要作为帖子正文的一部分发送到另一个系统。
比如说,如果有一个 application.properties 文件包含
my.property.raw=${parameter:some-identifier}
我还有一个可能看起来像这样的@ConfigurationProperties 注释类
@ConfigurationProperties(prefix = "my.property")
public class Properties {
private String raw;
// getters and such
}
我遇到的问题是 Spring 将看到 ${parameter:some-identifier} 并立即假定我希望它被注入一个属性名称“参数”,如果它不存在,则输入“一些标识符”。我试图将属性设置为${parameter:${parameter:some-identifier}},但 Spring 似乎已经考虑了递归属性注入,它仍然显示为“some-identifier”。
我知道我可以围绕它编写一些代码并将“:”替换为其他内容并在事后将其更改回来,但我试图在不更改任何代码的情况下使其工作。
总而言之,Spring boot 将其视为配置属性 ${parameter:some-identifier} 在注入到 ConfigurationProperties 注释类时,值最终为 some-identifier。我想要发生的是在 Spring 执行其变量替换过程之后 Properties 类中的值是${parameter:some-identifier},因为这种可注入的值格式适用于期望该格式的下游系统。最好不要更改任何代码。也许我可以使用一些特殊的格式来告诉 spring 忽略这个特定的属性。
感谢您的宝贵时间!是的,我意识到这可能与人们通常对 Spring 的期望相反。
【问题讨论】:
-
对不起,我没能得到你的问题,你能用实际输出和预期输出更新帖子吗?
-
可能是,尝试其中一些解决方案。
标签: java spring spring-boot