2010-05-21 13 views
38

मैं अपने applicationContext.xml में हैस्प्रिंग गुण (संपत्ति-प्लेसहोल्डर) autowiring

<context:property-placeholder location="classpath*:*.properties" /> 


<bean id="clientPreferencesManager" class="pl.bildpresse.bildchat2.business.ClientPreferencesManager" > 
    <property name="clientApiUrl" value="${clientapi.url}" />  
</bean> 

यह autowire द्वारा भी ऐसा ही करना संभव है? कुछ की तरह:

@Autowired 
@Qualifier("${clientapi.url}") 
public void setClientApiUrl(String clientApiUrl) { 
    this.clientApiUrl = clientApiUrl; 
} 

उत्तर

76

आप @Value उपयोग कर सकते हैं:

@Value("${clientapi.url}") 
public void setClientApiUrl(String clientApiUrl) { 
    this.clientApiUrl = clientApiUrl; 
} 
+0

सच है, वसंत 3.0, वर्तमान संस्करण है, जिसके लिए। (+1) – Bozho

+1

तो यह डॉलर का संकेत है! एक हैश नहीं पारितोषिक के लिए धन्यवाद। @value के लिए javadocs मुझे –

+0

बेवकूफ सवाल गुमराह लेकिन कहाँ से $ {clientapi.url} प्राप्त करता है ?? – user2441441

2

वसंत 3.0 के लिए, सही तरीके से पता चला एक है - @Value("${expression}")

का उपयोग कर वसंत पूर्व 3.0 के लिए, आप की कोशिश कर सकते हैं:

@Autowired 
private StringValueResolver resolver; 

यहां कोई संदर्भ प्रारंभिक समस्याएं नहीं थीं, बी मुझे यकीन नहीं है कि यह काम करेगा। रिज़ॉल्यूशन का उपयोग करके आप गुणों को हल कर सकते हैं।

1

मेरे समाधान clientapi.properties फ़ाइल

clientPreferencesManager.clientApiUrl=http://localhost:8084/ClientAPI/resources/ 

यह एक अच्छा भी

5

ठीक है में

<context:property-override location="classpath:clientapi.properties" /> 

और फिर उपयोग करने के लिए है। अभी मिला है।

@Autowired 
@Value("${clientapi.url}") 
private StringValueResolver resolver; 

मैं वसंत का उपयोग कर रहा 3.0.0.RELEASE

चीयर्स

8

यह मुझे समझने के लिए क्यों यह काम नहीं किया कुछ समय लगा: आप @Autowired कुछ की तरह जोड़ने की जरूरत है। मैंने हमेशा $ के बजाय # का उपयोग किया।

EL1008E:(pos 0): Field or property 'secretkey' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' 

बस से बदलना पड़ा:

@Value("#{secretkey}') 

@Value('${secretkey}') 

लिए मुझे आशा है कि यह किसी की समय बचाता है मैं हमेशा संदेश मिला।

+0

मुझे इस पर ब्लोक किया गया था ... यह ठीक था! धन्यवाद फेलिक्स – hashcoder