在 Spring 中为静态常量注入值
Posted
技术标签:
【中文标题】在 Spring 中为静态常量注入值【英文标题】:Injecting values for static constants in Spring 【发布时间】:2011-02-15 08:05:31 【问题描述】:在我的一个课程中有一个public static String
成员,我需要在applicationContext.xml
中设置这个值!也就是说,我们可以为这个静态属性注入一个值吗?
【问题讨论】:
【参考方案1】:不,不可能从 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 和组件扫描元素:
<context:component-scan base-package="com.example" />
使用静态字段添加您的 bean,如下所示:
@Configuration
public class JavaConfig
@Bean
public Demo demo()
Demo.fieldOne = "test";
return new Demo();
在这种情况下,JavaConfig 类必须在组件扫描元素中声明的 com.example 包中。
【讨论】:
【参考方案2】:是的,这个链接上有一个例子http://planproof-fool.blogspot.com/2010/03/spring-setting-static-fields.html
【讨论】:
以上是关于在 Spring 中为静态常量注入值的主要内容,如果未能解决你的问题,请参考以下文章