gpt4 book ai didi

java - 在 Spring 框架内的 ehcache.xml 文件中外部化 terracottaconfig 属性

转载 作者:行者123 更新时间:2023-12-04 05:40:01 24 4
gpt4 key购买 nike

有这个标签<terracottaConfig url="host1:9510,host2:9510,host3:9510"/>在 Spring Web 应用程序内的 ehcache.xml 文件中。我想将此标签的 url 属性外部化。 URL 的值应替换为来自外部文件的属性。如果您对此问题提出任何解决方案,这将非常有帮助。

最佳答案

你可以把这样的东西 -<terracottaConfig url="${terracotta.config.location}" /> , 但是最大的问题是这将只加载 from the system properties .它不是从 PropertyPlaceHolder 解析的,因为它不是 Spring 配置文件。

因此,如果您想使用外部配置文件,您基本上必须在 Spring 应用程序开始加载 ehcache.xml 文件之前以编程方式设置此系统属性 - 一种方法是编写您的自定义 ServletContextListener加载您的属性文件并基于此设置系统属性,这样当加载 ehcache.xml 时,它将能够正确解析占位符。

您的回答帮助我解决了我的问题。我只想添加,而不是通过程序设置系统属性,我使用 util:properties 如下

<bean id="sysProperties" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" value="#{@systemProperties}"/>
<property name="targetMethod" value="putAll"/>
<property name="arguments">
<util:properties>
<prop key="propertyname_used_in_ecache_xml">#{proerties_defined_using_property_factory['propertyname_defined_in_external_properties_file']}</prop>
</util:properties>
</property>
</bean>

<bean id="cacheManager"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" depends-on="sysProperties">
<property name="configLocation">
<value>classpath:ehcache.xml</value>
</property>
</bean>

关于java - 在 Spring 框架内的 ehcache.xml 文件中外部化 terracottaconfig 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11371017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com