2010-05-04 11 views
14

में स्थिर स्थिरांक के लिए मान इंजेक्शन करना मेरे वर्गों में से एक में public static String सदस्य है और मुझे इस मान को applicationContext.xml में सेट करने की आवश्यकता है! यही है, क्या हमारे लिए इस स्थिर संपत्ति के लिए मूल्य लगाने के लिए संभव है?वसंत

उत्तर

4

नहीं, यह अपनी XML संदर्भ से एक स्थिर क्षेत्र के लिए एक मूल्य इंजेक्षन करना संभव नहीं है पर एक उदाहरण है।

  • स्थिर संशोधक को हटाने और क्षेत्र
  • ऊपर जोड़ने @ इंजेक्षन/@ Autowire एक निर्माता/सेटर/init पद्धति जोड़ें:

    आप वर्ग को संशोधित कर सकते हैं, तो आप निम्नलिखित सरल विकल्प हैं।

अन्यथा, आप इसे वसंत के जावा कॉन्फ़िगरेशन समर्थन के साथ कर सकते हैं।

एक उदाहरण:

स्थिर क्षेत्र और एक JUnit विधि है कि दावा है कि वसंत कंटेनर स्थिर क्षेत्र में वांछित मूल्य injects साथ डेमो वर्ग:

@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" /> 

इस तरह स्थिर क्षेत्र के साथ अपने सेम जोड़ें:

@Configuration 
public class JavaConfig { 

    @Bean 
    public Demo demo() { 
     Demo.fieldOne = "test"; 

     return new Demo(); 
    } 
} 

इस मामले में, JavaConfig क्लास com.example पैकेज में होना चाहिए जैसा घटक-स्कैन तत्व में घोषित किया गया है।