如何在Spring中从上下文设置静态最终参数?

时间:2011-10-18 16:31:05

标签: java spring

我有静态最终字段的类,我想从我的上下文中初始化它们。我可以这样做吗?或者我必须寻找另一种解决方案?

3 个答案:

答案 0 :(得分:3)

由于final变量是在初始化期间必须完全定义一次的有效常量,因此不能使用Spring(或通常使用Java)执行此操作。不过请看:Java 5 - "final" is not final anymore

答案 1 :(得分:0)

这是final,这是怎么回事?

您可以通过使用非反射Java提供普通的setter来分配 - final静态变量。您可以使用Tomasz所指出的反射来设置最终字段。

答案 2 :(得分:0)

根据“matt b”的评论,你可以从变量声明中删除final,并在setter中实现“set once”功能。

例如:

private static String blammy = null;

public String getBlammy() { return blammy; }

public void setBlammy(String newValue)
{
  if (StringUtils.isNotBlank(newValue)) // only set to a non blank value.
  {
    if (blammy == null) // set once functionality
    {
      blammy = newValue;
    }
  }
}