【发布时间】:2011-02-15 08:05:31
【问题描述】:
在我的一个课程中有一个public static String 成员,我需要在applicationContext.xml 中设置这个值!也就是说,我们可以为这个静态属性注入一个值吗?
【问题讨论】:
标签: java spring static properties code-injection
在我的一个课程中有一个public static String 成员,我需要在applicationContext.xml 中设置这个值!也就是说,我们可以为这个静态属性注入一个值吗?
【问题讨论】:
标签: java spring static properties code-injection
不,不可能从 XML 上下文向静态字段注入值。
如果你可以修改类,你有以下简单的选择:
否则,您可以使用 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 包中。
【讨论】:
【讨论】: