2011-03-23 15 views
11

क्या मैं संदर्भ-स्थान आयात गतिशील बनाने के लिए संपत्ति-प्लेसहोल्डर से लोड की गई संपत्ति का उपयोग कर सकता हूं?आयात/बीन रेफरी के लिए संपत्ति प्लेसहोल्डर

<context:property-placeholder location="classpath*:/enterprise.properties"/> 
<import resource="classpath*:/Fsb${jdbc.ctxType?:Jdbc}-context.xml"/> 

गुण फ़ाइल

jdbc.ctxType=JTA 

तो इस तरह से मुझे लगता है कि एक संपत्ति के आधार पर भरी हुई है संदर्भ फ़ाइल के प्रकार बदल सकता है।

इसके अलावा, मैं एक सेम रेफरी नाम गतिशील बनाने के लिए एक ही बात कर सकते हैं?

<bean id="personBusinessService" class="com.foo.PersonBusinessServiceImpl" 
      p:personUidDataService-ref="personUidDataService${personUidDataService.sib?:Api}" 
      p:identifierLookupSearchService-ref="identifierLookupSearchService${identifierLookupSearchService.sib?:Api}" 
      p:contactPointBusinessService-ref="contactPointBusinessService${contactPointBusinessService.sib?:Api}" 
/> 

गुण

personUidDataService.sib=Stub 

जे

फ़ाइल -------------------- रेफरी के लिए संपत्ति का उदाहरण अद्यतन ---

addressLookupSearchService.sib=DaoMock 
: ----------------------

मैं निम्नलिखित प्रविष्टि के साथ एक संपत्ति फ़ाइल बनाईतो

मैं एक स्प्रिंग संदर्भ फ़ाइल में निम्नलिखित विन्यास है:

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

<!-- EntityManager will be injected into DAO by JPA annotations --> 
<bean id="addressSearchDao" class="com.foo.AddressSearchDaoImpl"/> 

<bean id="addressSearchDaoMock" class="com.foo.MockAddressSearchDaoImpl"/> 

<bean id="addressLookupSearchService" class="com.foo.AddressLookupSearchServiceImpl" 
    p:baseDao-ref="addressSearch${addressLookupSearchService.sib?:Dao}"/> 

और addressSearch $ {addressLookupSearchService.sib: दाव} काम नहीं करता है, यह हमेशा addressSearchDao की सेम आईडी भले ही चूक मेरी संपत्ति का कहना है कि इसे पता करने के लिए सेट करना चाहिए SearchDaoMock।

कोई विचार क्या मैं गलत कर रहा हूं?

उत्तर

13

यह this एक करने के लिए इसी तरह की एक सवाल है।

Imports से पहले सेम (संपत्ति-प्लेसहोल्डर) निर्माण हल कर रहे हैं, तो आप संपत्ति फ़ाइल का उपयोग नहीं कर सकते हैं गुण है जो आप एक आयात बयान में उपयोग करना चाहते हैं परिभाषित करने के लिए। इस मामले में आप system property (-Djdbc.ctxType=JTA) के रूप में गुण सेट (- पैरा नोट लिंक पर एक नजर है) करने के लिए है।

लेकिन सेम परिभाषाओं में संपत्ति फ़ाइल गुणों का उपयोग करके ठीक काम करता है - कि क्या वे :-)

अद्यतन के लिए कर रहे है: स्प्रिंग 3.1 के बाद से Unified Property Management आयात में भी गुण का उपयोग करने के लिए (धन्यवाद @Jay Blanton की अनुमति देता है टिप्पणियों में इसका जिक्र करते हुए)।

+0

सुझाव के लिए धन्यवाद ... मैं आयात जानकारी देख रहा हूं। एक संपत्ति का उपयोग कर बीन संदर्भ के रूप में, मैंने यह प्रश्न दिखाने के लिए प्रश्न अपडेट किया है कि मैं क्या करने की कोशिश कर रहा हूं ... और ऐसा लगता है कि यह मेरे लिए काम नहीं कर रहा है। –

+0

ऐसा लगता है कि मुझे जवाब मिल गया। मैंने सोचा था कि वाक्यविन्यास था?: डिफ़ॉल्ट मानों के लिए। लेकिन काम करने वाले वाक्यविन्यास, प्रश्न चिह्न के बिना $ {addressLookupSearchService.sib: दाओ} था। इस जेआईआरए के आधार पर - https://jira.springsource.org/browse/SPR-4785। –

+0

अच्छा है कि यह अब काम करता है। आपके अपडेट प्रश्न ने प्रश्न के फोकस को थोड़ा सा बदल दिया - मैंने आपकी विशेष समस्याओं (डिफ़ॉल्ट मान का उपयोग करने के साथ) पहले नहीं देखा था। – FrVaBe

-2

हाँ, आप कर सकते हैं। आप आयात और इंजेक्शन में अभिव्यक्तियों का उपयोग कर सकते हैं।

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