注释属性的值必须是常量表达式
我有一个属性文件,在获取平台参数后,我通过 spring 注释读取该文件
@Value("${platform}")
private String platform;
,我想根据 platform
参数值读取第二个参数。
@Value("${url." + platform + ."ws}")
private String url;
但这会产生错误,“注释属性的值必须是常量表达式”。 由于根据“平台”值有很多参数变化,我正在寻找一个通用的解决方案。
I have a properties file that I read by spring annotation like this
@Value("${platform}")
private String platform;
after I get the platform parameter, I would like to read a second parameter depending on platform
parameter value.
@Value("${url." + platform + ."ws}")
private String url;
but this gives error, "value for the annotation attribute must be constant expression".
since there are lots of parameter changes depending on "platform" value, I am looking for a generic solution.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您无法直接在 @Value 表达式中访问
platform
,但您可以使用 Spring 表达式语言来实现您的最终目标。You can't access
platform
directly in the @Value expression, but you can use Spring Expression Language to accomplish your end goal.该参数在编译时评估。因此它需要是
final
或static final
等(即Enum
)。我不知道
@Value
注释是否允许这样做。但您始终可以实现自己的注释。 Java 注释中无法进行扩展。The parameter is evaluated in compilation time. So it needs to be
final
orstatic final
among others (ieEnum
).I don't know if the
@Value
annotation allows that. But you can always implement your own annotation. Extending is not possible in Java annotations.