#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. Таким образом, будут использоваться ваши значения по умолчанию, указанные в файле контекста, если не найдено переопределяющих записей файла свойств.