मान लीजिए कि आपके वसंत संदर्भ फ़ाइल में आपने कुछ संदर्भ फ़ाइलों को आयात किया है जिन्हें आप संशोधित नहीं कर सकते हैं।वसंत - एक अलग संदर्भ फ़ाइल से आयातित बीन्स पर गुण सेट करें
क्या आयातित सेम के गुणों को सेट करने का कोई तरीका है? मैं आयातित संदर्भ फ़ाइलों से बीन परिभाषा को कॉपी और पेस्ट नहीं करना चाहता हूं और इसे संशोधित नहीं करना चाहता क्योंकि यह मेरे कोड और बाहरी पुस्तकालय के बीच गलत निर्भरता पैदा करेगा।
मुझे बस मौजूदा बीन की एक संपत्ति को संशोधित करने की आवश्यकता है।
यह सिद्धांत में संभव होना चाहिए कि मैं इसे एक कस्टम क्लास का उपयोग करके कर सकता हूं जो निर्भरता के रूप में अद्यतन करने के लिए बीन प्राप्त करता है और init-method में अपनी गुणों को संशोधित करता है।
मुझे आश्चर्य है कि स्प्रिंग में ऐसा करने के लिए मानक वाक्यविन्यास है या नहीं।
<bean id="the.message" class="com.someco.SomeClass">
<property name="message" value="default message" />
</bean>
मैं इस एक बाहरी निर्भरता के रूप में आयात और इसलिए मैं इस परिभाषा को संशोधित करने का विकल्प नहीं है:
पुस्तकालय-context.xml में उदाहरण के लिए वहाँ निम्नलिखित सेम परिभाषा है।
बेशक मैं इस संदर्भ को अपने संदर्भ में कॉपी और पेस्ट कर सकता हूं और इसे ओवरराइड कर सकता हूं। उदाहरण के लिए एक बीन के साथ यह ठीक होगा कि यह बहुत आसान है। समस्या यह है कि अक्सर निर्भरता अधिक जटिल होती है और वे पुस्तकालय के एक अलग संस्करण में बदल सकते हैं।
मैं चाहता हूं कि अन्य सभी विवरणों को अनदेखा करने के लिए बीन "the.message" की संपत्ति सेट करना है।
मैं की तरह कुछ का उपयोग करने के बारे में सोच रहा हूँ:
<bean id="myproxy" class="com.myapp.Proxy" init-method="copyProperties">
<property name="proxied" value="the.message" />
<property name="message" value="my message" />
</bean>
यह "प्रॉक्सी" केवल "the.message" के गुणों को सेट किया जाता है।
संभव डुप्लिकेट [मैं एक जगह ले सकता है रनटाइम पर स्प्रिंग बीन परिभाषा?] (Http://stackoverflow.com/questions/4041300/can-i-replace-a-spring-bean-definition-at-runtime) –
यह नहीं देखता मैं एक ही समस्या हूँ। मैं रनटाइम पर इसे बदलना नहीं चाहता हूं। मुझे केवल अपनी संदर्भ फ़ाइल में एक संपत्ति सेट करने की आवश्यकता है। –