2010-01-19 7 views
5

क्या संपत्ति प्लसहोल्डर से @Autowired के माध्यम से एक बीन में एक संपत्ति जोड़ना संभव है?@Autowired और PropertyPlaceholder

<context:component-scan base-package="..."/> 

उत्तर

9

वसंत 3.0 (मैं मील का पत्थर 3 से लगता है) आप @value ("$ उपयोग कर सकते हैं {foo.bar: मैं xml संदर्भ-config में इस तरह से यह इंजेक्षन नहीं कर सकते क्योंकि सेम लोड किए गए हैं } ") PropertyPlaceholder से गुणों का उपयोग करने के लिए।

+0

आप मुझे इस के लिए एक उदाहरण दे सकते हैं? मैं वसंत 3 आरसी 3 का उपयोग कर रहा हूं और जब मैं इस तरह से कोशिश करता हूं (उदाहरण के लिए @ वैल्यू ("$ {foo.bar}")) तो मेरी विशेषता मान "foo.bar" हो जाती है ... – woezelmann

+2

हाँ, मान लीजिए कि आपके पास संपत्ति प्लेसहोल्डर है इस तरह कॉन्फ़िगर किया गया: '<संदर्भ: property-placeholder location =" classpath: app.properties "/>' आप 'app.properties' से key 'foo.bar' के साथ प्रॉपर्टी के मान को इंजेक्ट कर सकते हैं: 'वर्ग MyBean { @ वैल्यू ($ {"foo.bar"} निजी स्ट्रिंग मान; } ' – semberal

+0

प्रारूपण के लिए खेद है, मैं यहां नया हूं :) – semberal

6

एक वसंत 2.5 दृष्टिकोण:

@Component 
public class Foo { 
    @Autowired 
    @Qualifier("myFlag") 
    private Boolean flag; 
    /* ... */ 
} 

और संदर्भ

<context:component-scan base-package="..."/> 
<context:property-placeholder location="classpath:app.properties"/> 
<!-- the flag bean --> 
<bean id="myFlag" class="java.lang.Boolean"> 
    <constructor-arg value="${foo.bar}"/> 
</bean> 

चीयर्स

+0

वैकल्पिक रूप से +1, और थोड़ा कम शब्दशः, '@ संसाधन (नाम = "myFlag") ' – skaffman

संबंधित मुद्दे