स्प्रिंग 3.0.5.RELEASE में एक सेम के लिए ऑटो-तार गुण की कोशिश कर रहा से @value एनोटेशन का मूल्यांकन नहीं है, मैं उपयोग कर रहा हूँ:वसंत 3.0.5 गुण
config.properties
:username=myusername
main-components.xml
:<context:property-placeholder location="classpath:config.properties" />
MyClass:
@Service public class MyClass { @Value("${username}") private String username; ... }
नतीजतन, उपयोगकर्ता नाम सचमुच"${username}"
करने के लिए सेट हो जाता है, तो अभिव्यक्ति पार्स नहीं होती है। इस वर्ग पर मेरी अन्य ऑटो वायर्ड निर्भरताएं सेट हो जाती हैं, और वसंत कोई अपवाद नहीं फेंकता है। मैंने @Autowired
जोड़ने की भी कोशिश की लेकिन इससे मदद नहीं मिली।
अगर मैं एक अलग सेम के गुणों को पार्स और फिर @Autowired
+ @Qualifier
उपयोग करते हैं, यह काम करता है:
<bean id="username" class="java.lang.String">
<constructor-arg value="${username}"/>
</bean>
कोई भी विचार कैसे सिर्फ @Value
उपयोग करने के लिए? शायद मुझे कुछ वसंत निर्भरता शामिल करने की ज़रूरत है जो मैंने नहीं किया है? धन्यवाद
क्या आप सुनिश्चित हैं कि आपके पास 'संदर्भ: संपत्ति-प्लेसहोल्डर>' उसी एप्लिकेशन संदर्भ में आपके 'MyClass' बीन (मूल संदर्भ में नहीं) के रूप में है? – axtavt
आप सही हैं। मैं संदर्भ संदर्भ में ContextLoaderListener द्वारा परिभाषित संदर्भ से <संदर्भ: संपत्ति-प्लेसहोल्डर> स्थानांतरित कर दिया। अब मेरे मूल्य पार्स हो जाते हैं। आपका बहुत बहुत धन्यवाद! –
यहां करने के लिए बहुत उपयोगी चीज है अनदेखी-अनदेखी-प्लेसहोल्डर को झूठी करने के लिए सेट करना - इस प्रकार एप्लिकेशन विफल हो जाएगा यदि यह प्लेसहोल्डर को हल नहीं कर सकता है - जो आपकी समस्या –