正如我们可以使用@Value批注读取属性一样,是否可以通过代码更改属性的值?

@Value("#{envProps['" + Keys.Env.updatedDate + "']}")
  private String date;


在environment.properties中的值

     updatedDate =2013-10-01


我想将该值更改为2013-10-16。怎么做?

谢谢

最佳答案

对不起,你不能那样做

@Annotations及其在Java中的值为constants

@Annotations在编译时存储在类文件(在RuntimeVisibleAnnotations中)中。
它们的值可以是String,Class或其他值,并且不能在运行时更改。

jvm class file spec

替代解决方案

使用类似的占位符

   @Value("${updatedDate.envProps}")
   private String date;


并编写自定义PropertyPlaceholderConfigurerupdatedDate.envProps解析为所需的值

09-29 23:43