本文介绍了静态函数中@Value 注释的替代方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

不能在静态变量上使用 @Value.

It's not possible to use @Value on a static variable.

@Value("${some.value}")
static private int someValue;

static public void useValue() {
    System.out.println(someValue);
}

当我这样做时,0 被打印出来.那么有什么好的替代方法呢?

When I do this, 0 is printed. So what is a good alternative to this?

推荐答案

Spring 在静态字段中注入注释(默认).

Spring inject noting in static field (by default).

所以你有两个选择:

  • (更好的)使字段非静态
  • (丑陋的 hack)添加一个写入静态字段的非静态 setter,并将 @Value 注释添加到 setter.
  • (the better one) make the field non static
  • (the ugly hack) add an none static setter which writes in the static field, and add the @Value annotation to the setter.
  • 然后是 MethodInvokingFactoryBean 的技巧 -- 这个例子是用于自动装配的字段,但我想你也可以为 @Value 调整它
  • and then there is the trick with the MethodInvokingFactoryBean -- this example is for autowired fiels, but I guess you can adapt it for @Value too

这篇关于静态函数中@Value 注释的替代方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-07 02:08