Свойства Spring PropertyPlaceholderConfigurer по умолчанию не прочитаны

#spring #properties #default #placeholder

#spring #свойства #По умолчанию #плейсхолдер

Вопрос:

Я пытаюсь внедрить activemq broker в Tomcat. База кода будет развернута в разных средах. Я хочу экстернализировать некоторые параметры, но хочу предоставить значения по умолчанию для этих параметров на случай, если развернутая среда не предоставляет значения для владельцев мест.

Это то, что у меня есть :

 <property name="properties">
    <props>
        <prop key="embed.broker.networkConnectorURI">static:(failover:(tcp://server01:61616,tcp://server02:61616))
        </prop>
        <prop key="embed.broker.transportConnectorURI">vm://localhost:61616</prop>
    </props>
</property>
  

 <bean id="broker" class="org.apache.activemq.broker.BrokerService"
    init-method="start" destroy-method="stop">
    <property name="networkConnectorURIs">
        <list>
            <ref >${embed.broker.networkConnectorURI}</ref>
        </list>
    </property>
    <property name="transportConnectorURIs">
        <list>
            <value>${embed.broker.transportConnectorURI}</value>
        </list>
    </property>
    <property name="brokerName" value="embed-broker" />
</bean>
  

Когда я развертываю это в среде, где отсутствуют заполнители, Tomcat выдает ошибку «Не удалось разрешить заполнитель ’embed.broker.networkConnectorURI’ «. Другими словами, значения по умолчанию не выбираются.

Буду признателен за любую помощь.

Ответ №1:

Чтобы получить некоторые значения по умолчанию, продолжайте этот путь:

 <bean id="myServer" class="com.gordondickens.myapp.MyServerConfig">
<property name="serverName" value="${server.name?localhost}" />
<property name="serverPort" value="${server.port?25}" />
</bean>
  

Ответ №2:

Используйте PropertyOverrideConfigurer вместо PropertyPlaceholderConfigurer. Таким образом, будут использоваться ваши значения по умолчанию, указанные в файле контекста, если не найдено переопределяющих записей файла свойств.