在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包中。