2010-05-04 92 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包中。