将属性注入非托管的Spring xml

时间:2014-04-13 07:56:51

标签: java xml spring properties ehcache

我有xml。 (ehcache.xml中) 我想从属性文件(在类路径上)注入它的属性。

但是由于这个xml不是Spring托管bean,我无法这样做。

有任何建议如何克服这个问题?

xml:

...
            properties="peerDiscovery=manual,rmiUrls=//**${other.node.hostname}**:41001/org.jasig.cas.ticket.ServiceTicket|//**${other.node.hostname}**:41001/org.jasig.cas.ticket.TicketGrantingTicket"
            propertySeparator="," />



    <cacheManagerPeerListenerFactory
            class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
            properties="port=41001,socketTimeoutMillis=5000" />

</ehcache>

我想从另一个属性文件中注入 $ {other.node.hostname}

但是我在运行时得到了这个:

引起:java.net.URISyntaxException:索引2:// $ {other.node.hostname} 的权限中的非法字符:41001 / org.jasig.cas.ticket.TicketGrantingTicket < / p>

感谢, 射线。

1 个答案:

答案 0 :(得分:0)

在ehcache.xml中

它不起作用,因为它不是弹簧配置。但是如果你在spring中定义等效配置而不是ehcache文件,它应该可以工作:

<context:property-placeholder location="classpath:config.properties"/>

<bean id="myCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
    <property name="cacheManager" ref="cacheManager"/>
    <property name="maxElementsInMemory" value="${cache.maxMemoryElements}"/>
</bean>

最好的方法是尽可能少地使用ehcache.xml文件并在spring中配置所有内容,因为文件中的大多数选项都具有弹簧等效值。