2015-10-07 24 views
0

我在基於mule的項目中有service.properties和service-properties.xml。我如何定義service.properties應該在service-properties.xml之前加載。 因爲我正在使用service-properties.xml中的service.properties屬性。 因爲我有這樣的代碼在服務properties.xml文件:爲什麼當我運行項目時,它無法讀取屬性文件中的屬性?

<context:property-placeholder 
     location="classpath:mule/service.properties" 
     properties-ref="propertiesHolder" /> 
    <context:annotation-config /> 
    <spring:bean id="propertiesHolder" 
     class="MyClass"> 
     <spring:property name="dataSource" ref="dataSource" /> 
    </spring:bean> 
    <spring:bean id="dataSource"  class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 

     <spring:property name="driverClassName value="${db.driverClassName}" /> 
     <spring:property name="url" value="${db.url}" /> 
     <spring:property name="username" value="${db.username}" /> 
     <spring:property name="password" value="${db.password}" /> 
    </spring:bean> 

我的項目是成功打造但是當我運行的項目它無法解析db.driverClassName,db.url配置參數,...和db.password從service.properties,但我有他們在service.properties文件。

+0

添加目錄結構的snaphot會有所幫助。 – Sudarshan

回答

0

我可以從文件,並從數據庫中此配置讀取屬性:

<spring:bean 
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <spring:property name="locations"> 
      <spring:value>classpath:mule/service.properties</spring:value> 
     </spring:property> 
     <spring:property name="properties"> 
      <spring:value>propertiesFromDataSource</spring:value> 
     </spring:property> 
    </spring:bean> 
0

如果您正在使用的上下文加載在同一範圍內的屬性文件和配置文件:物業佔位符,然後騾/ Spring將採取的,對你有shoould沒有問題:

https://docs.mulesoft.com/mule-user-guide/v/3.7/configuring-properties

+0

我的項目是建立。當我運行我的項目時,我的db.url = $ {property.url}在我的xml文件中。 property.url的值在我的.properties文件中。但它不能從service.properties讀取property.url,因爲我認爲它沒有加載。 – Fariba

+0

你能用代碼示例更新你的問題嗎? –

+0

我用代碼示例更新了我的問題 – Fariba

0

我認爲您的應用程序無法解析屬性,因爲您在property-placeholder配置中包含兩個 a location屬性和properties-ref屬性。 properties-ref屬性旨在替換location屬性,以便提供來自java.util.Properties對象的屬性值。

試試這個:

<context:property-placeholder location="classpath:mule/conversion/service.properties" /> 

然後,您可以簡單地參考性質的dataSource豆。

沒有使用屬性(dataSource)連接bean的明確引用和加載屬性的bean的原因是<context:property-placeholder />元素定義了BeanFactoryPostProcessor。這是一種特殊的bean,它可以在實例化之前修改其他bean的定義。它使用${propertyName}語法搜索bean屬性,並在Spring試圖實例化之前替換它們。

更新:如何加載從數據庫性能,通過性能

如果你的目標是從數據庫加載配置屬性,並配置與另一個屬性文件連接到數據庫的配置,檢查出this StackOverflow question

+0

@Rayan Hoegg我需要從屬性文件中讀取屬性,還需要讀取保存在數據庫中的屬性。當我將它們分開放置在兩個屬性板上時,我也有同樣的問題 – Fariba