Java 注释属性的值必须是常量表达式
我有一个属性文件,由spring注释读取,如下所示Java 注释属性的值必须是常量表达式,java,spring,annotations,Java,Spring,Annotations,我有一个属性文件,由spring注释读取,如下所示 @Value("${platform}") private String platform; 获取平台参数后,我想根据platform参数值读取第二个参数 @Value("${url." + platform + ."ws}") private String url; 但这会产生错误,“注释属性的值必须是常量表达式”。 由于根据“平台”值有很多参数变化,我正在寻找一个通用的解决方案。在编译时对参数进行评估。因
@Value("${platform}")
private String platform;
获取平台参数后,我想根据platform
参数值读取第二个参数
@Value("${url." + platform + ."ws}")
private String url;
但这会产生错误,“注释属性的值必须是常量表达式”。
由于根据“平台”值有很多参数变化,我正在寻找一个通用的解决方案。在编译时对参数进行评估。因此它需要是
final
或static final
(即Enum
)
我不知道
@Value
注释是否允许这样做。但您始终可以实现自己的注释。在Java注释中无法进行扩展。您不能在@Value表达式中直接访问平台
,但可以使用Spring表达式语言来实现最终目标
@Value("${platform}")
private String platform;
@Value("#{'Url.'.concat(${platform}).concat('.ws')}")
private String url;
那么,有没有一种方法可以使用第一个参数值来获取第二个参数?有没有任何示例可以帮助我扩展@value注释?我是春季注释的新手。不,这是不可能的,但你可以使用自己的注释。