2013-11-21 38 views
10

我有一個關於騾子的上下文屬性佔位符的一個問題,我有兩個文件設置是這樣的:騾子ESB:上下文屬性佔位符

<context:property-placeholder location="classpath:mule-app-1.properties, file:///etc/mule/conf/mule-app-2.properties" /> 

首先,這是一個有效的配置,其次該文件將優先於其他? app1或app2文件?

-S

回答

8

每個將依次加載,覆蓋第一個屬性的重複屬性。所以在你的情況下,在mule-app-2.properties中定義的屬性將優先。

接近this article的末尾我描述了使用此方法來提供環境特定的配置屬性。

2

是的,您可以通過Mule上下文屬性佔位符加載多個文件。正確的方式做它是將性質src/main/resources文件,此文件夾的類路徑,然後指定是這樣的:

<context:property-placeholder location="mule-app-1.properties, mule-app-2.properties" /> 

我不知道爲什麼你想在他們

定義重複屬性

編輯:

要指定加載多個文件的順序,使用order屬性:

<context:property-placeholder location="mule-app-1.properties" order="1"/> 
<context:property-placeholder location="mule-app-2.properties" order="2"/> 
+0

這樣的文件會被首先加載,應用-1或應用-2?你知道哪個優先嗎? – insaneyogi

+0

查看我的回答編輯 –

+0

所以我的問題確實是如果沒有指定訂單屬性,&我有兩個屬性文件設置將導致錯誤,或者是否有一個默認排序?如果是的話,默認排序是什麼。 – insaneyogi

0

我也遇到過相同的情況。下面是我的實踐經驗成果:

  1. 如果兩個文件存在,無論是內部的項目或服務器,兩者將在項目/應用程序啓動時加載。如果文件不可用,它將拋出異常(java.io.FileNotFoundException:系統找不到指定的文件)運行應用程序時。

  2. 使用多個屬性文件並瞭解優先級是非常有趣的。在這種情況下,兩個屬性文件都將被加載,因此在這兩個文件中定義的屬性將在運行時加載。但是,如果在兩個文件中定義了相同的屬性,則mule總是優先考慮最後聲明的文件,並且附加屬性如訂單尚未定義。

    對於實施例,如果有一個屬性「db.dbname = test_university」內部
    「mule-app-1.properties」「db.dbname =大學」內部「mule-聲明app-2.properties「 then $ {db。DBNAME}配置XML中會加載「大學」

2

你的配置應該是如下:

<context:property-placeholder location="mule-app.properties, file:C://Users//schiraboina//Desktop//123.txt"/> 

在您嘗試通過使用讀取值以上的情況下'$ {key_name}',優先順序爲 1. mule-app.properties 2.從外部位置讀取文件

0

有關此問題的更多信息。數據將被讀取,給予CLASSPATH中數據的首選,然後讀取文件中的數據!

0

Spring將依次加載來自每個資源的屬性,當它多次找到它們時覆蓋屬性。這使您可以爲屬性提供默認值,並在每個環境中對其進行自定義。

對於如:

<context:property-placeholder 
    location="classpath:myapp-config.properties,classpath:myapp-config-${MULE_ENV}.properties,file:/opt/mule/conf/${MULE_ENV}/myapp-config.properties" 
    ignore-resource-not-found="true" 
    ignore-unresolvable="true" /> 

這非常類似於剛纔你所提到以上,並回答你的問題:

  • 語法是完全正常的。不會拋出異常
  • Mule-app-22.properties將優先於mule-app-1.properties。

請參考以下鏈接瞭解詳情: http://confluex.com/blog/integration-software-is-software/

0

By Tim Hennekey 你可以用這個例子MULE同春:

<spring:bean id="property-placeholderInstance" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" name="Bean"> 
     <spring:property name="locations"> 
      <spring:list> 
       <spring:value>file:${mule.home}/conf/PropertyFile1.properties</spring:value> 
       <spring:value>file:${mule.home}/conf/PropertyFile2.properties</spring:value> 
      </spring:list> 
     </spring:property> 
    </spring:bean>