2009-02-10 10 views
16

एक मैं नहीं मिला है मेरे सिर वसंत के चारों ओर लिपटा अभी तक है, तो मुझे ठीक कर लें इस सवाल का कोई मतलब नहीं है ...कैसे एक भी सेम पर इस्तेमाल के लिए एक से अधिक फ़ाइलों से वसंत गुण इकट्ठा करने के लिए

मेरे पास है PropertyPlaceholderConfigurer

<bean id="rdbmPropertiesPlacholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" lazy-init="false"> 
    <property name="location" value="classpath:/properties/rdbm.properties" /> 
</bean> 

और मुझे लगता है कि एक बीन इंजेक्शन है मुझे लगता है?

<bean id="PortalDb" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="${hibernate.connection.driver_class}" /> 
    <property name="url" value="${hibernate.connection.url}" /> 
    <property name="username" value="${hibernate.connection.username}" /> 
    <property name="password" value="${hibernate.connection.password}" /> 
    ... 

मैं क्या चाहते हैं एक दूसरे उपयोगकर्ता नाम/पासवर्ड के साथ फाइल ताकि मैं दो अलग अलग फ़ाइलों में गुण विभाजित कर सकते हैं एक अलग गुण की ओर इशारा करते प्लेसहोल्डर है। फिर डेटाबेस कनेक्शन जानकारी डीबी उपयोगकर्ता नाम/पासवर्ड से अलग हो सकती है, और मैं स्रोत को नियंत्रित कर सकता हूं, न कि दूसरे।

मैंने मूल रूप से rdbmPropertiesPlaceholder को एक अलग आईडी और फ़ाइल के साथ कॉपी करने और गुणों तक पहुंचने का प्रयास करने की कोशिश की है, लेकिन यह काम नहीं करता है।

यह कोड uPortal ओपन सोर्स वेब पोर्टल प्रोजेक्ट से है।

+0

यह भी देखें http://stackoverflow.com/questions/686635/is-it-possible-to-have-multiple-propertyplaceholderconfigurer-in-my-applicationc – Vadzim

उत्तर

28

इस अंकन का उपयोग करके आप एक से अधिक फ़ाइलों निर्दिष्ट कर सकते हैं:

<bean id="rdbmPropertiesPlacholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" lazy-init="false"> 
    <property name="locations"> 
     <list> 
      <value>classpath:/properties/rdbm.properties</value> 
      <value>classpath:/properties/passwords.properties</value> 
     </list> 
    </property> 
</bean> 

propertyplaceholderconfigurerer सिर्फ इन सब विलीन हो जाती है एक है की तरह वहाँ केवल है, तो आपके सेम परिभाषाओं जहां गुण से आते हैं पता नहीं है देखने के लिए।

+0

वह वाक्यविन्यास ठीक लगता है, लेकिन ऐसा लगता है कि यह लोड नहीं लगता है मेरी दूसरी फाइल वास्तव में यकीन नहीं है कि क्या हो रहा है ... –

+0

ठीक है, तो मुझे लगता है कि मैंने इसे समझ लिया है। वही बात दो जगहों पर की जाती है, लेकिन ऐसा लगता है कि मैं उस पर प्रभाव डाल रहा हूं जिसे मैं नहीं देख रहा था। धन्यवाद, मुझे लगता है कि यह तय है! –

17

org.springframework.beans.factory.config.PropertyPlaceholderConfigurer इस (के रूप में पहले से ही जवाब दे दिया। आप क्या करना चाहते हो सकता है, ताकि आप दोनों फ़ाइलों से समान नाम वाले गुण का उल्लेख कर सकते नाम रिक्ति का उपयोग कर रहा है क्या कर सकते हैं । ambiquity के बिना अपने उदाहरण के लिए, आप यह कर सकते हैं:

<bean id="generalPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="classpath:/properties/general.properties"/> 
</bean> 

<bean id="db.PropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="classpath:/properties/rdbm.properties" /> 
    <property name="placeholderPrefix" value="$db{" /> 
    <property name="placeholderSuffix" value="}" />  
</bean> 

अपने संदर्भ फ़ाइलों में, अब आप $ {someproperty} साथ सामान्य गुणों का उल्लेख कर सकते हैं, और {someproperty $ db के साथ गुण rdbm को देखें }

यह आपकी संदर्भ फाइलें डेवलपर को अधिक स्वच्छ और स्पष्ट बनाती हैं।

+1

यह एक बार काम करेगा जब मैं '.properties' फ़ाइल यानी @Value (" $ {content.of.properties.file} ") की सामग्री प्राप्त करना चाहता हूं? –

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

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