Mule ESB: Контекст Property Placeholder

У меня есть вопрос относительно заполнителя свойств контекста Mule, у меня есть два файла, настроенные следующим образом:

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

Во-первых, это действительная конфигурация, во-вторых, какой файл будет иметь приоритет над другим? app1 или app2?

-S

Ответ 1

Каждый будет загружен по очереди, перезаписывая повторяющиеся свойства из первого. Таким образом, в вашем случае свойства, определенные в mule-app-2.properties, будут иметь приоритет.

В конце в этой статье Я описал этот метод для предоставления свойств конфигурации, специфичных для среды.

Ответ 2

Да, вы можете иметь несколько файлов, загружаемых через заполнитель свойств контекста Mule. Правильный способ сделать это - поместить файл свойств в src/main/resources, эта папка находится в пути к классам и затем указать что-то вроде этого:

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

Я не уверен, почему вы хотите определить в них повторяющиеся свойства.

EDIT:

Чтобы указать порядок загрузки нескольких файлов, используйте атрибут order:

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

Ответ 3

Ваша конфигурация должна быть следующей:

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

В приведенном выше примере вы пытаетесь прочитать значения с помощью "$ {key_name}". Порядок приоритета будет 1. mule-app.properties 2. Чтение файла из внешнего местоположения

Ответ 4

Я также сталкивался с одним и тем же сценарием. Ниже приводится результат моего практического опыта:

  • Если оба файла существуют либо внутри проекта, либо на сервере, оба будут загружаться во время запуска проекта/приложения. Если файлы недоступны, он будет генерировать исключение (java.io.FileNotFoundException: система не может найти указанный файл) во время запуска приложения.

  • Весьма интересно использовать несколько файлов свойств и знать приоритет. В этом случае оба файла свойств будут загружены и, следовательно, свойства, определенные внутри обоих файлов, будут загружены в течение времени выполнения. Однако mule всегда отдает предпочтение последнему объявленному файлу в случае, если в обоих файлах определены одни и те же свойства, и дополнительный атрибут, например order, не был определен.

    Например, если в объявлении есть свойство "db.dbname = test_university" "mule-app-1.properties" и "db.dbname = university" внутри "mule-app-2.properties" , затем ${db.dbname} внутри config xml загрузит "университет"

Ответ 5

За дополнительной информацией по этому вопросу. Данные будут прочитаны, давая первое предпочтение данным в CLASSPATH, тогда данные в файле будут прочитаны!

Ответ 6

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/

Ответ 7

Тим Хеннеки Этот пример можно использовать для MULE с Spring:

    <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>