2011-08-20 12 views
23

अंतिम विशेषता के लिए गुण फ़ाइल से स्प्रिंग इंजेक्शन पर एक साधारण प्रश्न।अंतिम विशेषता में वसंत संपत्ति इंजेक्शन @ वैल्यू - जावा

मैं एक गुण फ़ाइल जो मैं में एक फ़ाइल पथ संग्रहीत करना चाहते है आम तौर पर जब मैं गुण फ़ाइलों का उपयोग मैं सेटअप वर्ग कुछ इस तरह का उपयोग कर जिम्मेदार बताते हैं:।

private @Value("#{someProps['prop.field']}") String someAttrib ; 
तब में

मेरी spring.xml मैं की तरह कुछ होता है :

<util:properties id="someProps" 
    location="classpath:/META-INF/properties/somePropFile.properties" /> 

यह अच्छी तरह से काम करता है, सरल है और कोड को अच्छा और साफ बनाता है। लेकिन मुझे यकीन नहीं है कि अंतिम श्रेणी विशेषताओं में गुणों को इंजेक्ट करने का प्रयास करते समय उपयोग करने के लिए सबसे साफ पैटर्न क्या है?

जाहिर है कुछ की तरह:

private static final @Value("#{fileProps['dict.english']}") String DICT_PATH; 

काम नहीं करेगा। क्या कोई और तरीका है?

चीयर्स!

+2

नहीं है, दो दृष्टिकोण असंगत हैं। – skaffman

उत्तर

24

एकमात्र तरीका आप अंतिम क्षेत्र में मूल्य इंजेक्ट कर सकते हैं Constructor Injection के माध्यम से है। बाकी सब कुछ वसंत की तरफ एक भयानक हैक होगा।

+1

क्या इसका कोई उदाहरण है? – wheeler

0

आप एक उदाहरण के लिए देख रहे हैं:

public class Test { 


    private final String value; 
    public Test(@Value("${some.value}") String value){ 
     this.value=value; 
     System.out.println(authURL); 
    } 
    } 
संबंधित मुद्दे