2011-05-11 77 views
2

我想在Tomcat中嵌入ActiveMQ代理。代码库将部署在不同的环境中。我想要将某些参数外部化,但希望为这些参数提供默认值,以防部署环境不提供占位符值。春PropertyPlaceholderConfigurer默认属性未读

这是我有:

<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'“错误。换句话说,默认值没有被拾取。

任何帮助,将不胜感激。

回答

3

有一些默认值,走在这条道路:

<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的。这样,如果没有找到重写的属性文件条目,将使用在上下文文件中指定的默认值。