在Spring中注入静态常量的值

在我的一个类中有一个public static String成员,我需要在applicationContext.xml设置这个值! 也就是说,我们可以为这个静态属性注入一个值吗?

是的,这个链接有一个例子http://planproof-fool.blogspot.com/2010/03/spring-setting-static-fields.html

不,不可能从XML上下文向静态字段注入值。

如果您可以修改类,则可以选择以下简单方法:

  • 删除静态修改器并在字段上方添加@Inject / @ Autowire
  • 添加构造函数/ setter / init方法。

另外,您可以使用Spring的Java配置支持来实现。

一个例子:

带有静态字段的Demo类和一个断言Spring容器将所需值注入静态字段的JUnit方法:

 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("test-context.xml") public class Demo { public static String fieldOne; @Test public void testStaticField() { assertEquals("test", fieldOne); } } 

将上下文命名空间添加到applicationContext和component-scan元素:

  

添加你的bean与静态字段,如下所示:

 @Configuration public class JavaConfig { @Bean public Demo demo() { Demo.fieldOne = "test"; return new Demo(); } } 

在这种情况下,JavaConfig类必须位于component-scan元素中声明的com.example包中。