2010-05-04 136 views
14

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

回答

4

不,这不可能从您的XML内容注入价值静态字段的一个例子。

如果你可以修改类,您有以下简单的选择:

  • 删除static修饰符,并添加@喷射/ @自动装配领域
  • 上面添加一个构造/二传手/ init方法。

否则,您可以使用Spring的Java配置支持。

一个例子:

与静电场和断言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类必须位于component-scan元素中声明的com.example包中。