如何在 ehcache 配置文件中注入属性?

Posted

技术标签:

【中文标题】如何在 ehcache 配置文件中注入属性?【英文标题】:How to inject properties in ehcache configuration file? 【发布时间】:2017-02-13 18:15:57 【问题描述】:

是否可以在 ehcache.xml 中注入一些属性?

例如我有不同的属性文件,每个都属于一个环境:

my_project_name.local.properties

my_project_name.test.properties

my_project_name.int.properties

my_project_name.prod.properties

它们中的每一个都包含不同环境的属性。

我想在 ehcache.xml 中注入属性maxByteslocalHeap 如下:

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="ehcache.xsd"
     updateCheck="false" monitoring="autodetect"
     maxBytesLocalHeap="$my_project.cache.maxBytesLocalHeap">
     .....
</ehcache>

my_project.cache.maxBytesLocalHeap 在上面显示的每个属性文件中都有定义,并且根据我的应用程序运行的环境具有不同的值。

【问题讨论】:

【参考方案1】:

简短的回答是否定的,目前所有现有的 Ehcache 版本(最新的 2.10.2 和 3.1.3)。

您问题的长答案取决于 Ehcache 版本:

Ehcache 2.6.x 到 2.10.x 仅支持 CacheManager 级别的磁盘路径配置的属性替换。使用的模式是经典的$my.prop。 Ehcache 3.0.0 到 3.1.2 不支持任何属性替换。 Ehcache 3.1.3 及更高版本支持在所有接受文本的模式位置进行属性替换。同样,要使用的模式是经典的$my.prop。请注意,这意味着对于您的示例,您将无法替换大小信息,因为 XSD 强制该值是严格的正数。

此处列出的最新限制可以解除 - 开发团队只是不确定是否值得付出努力。因此,如果这是您认为 Ehcache 应该提供的东西,请在ehcache-users google 群组中发送邮件。

【讨论】:

以上是关于如何在 ehcache 配置文件中注入属性?的主要内容,如果未能解决你的问题,请参考以下文章

关于ehcache配置中timeToLiveSeconds和timeToIdleSeconds的区别

spring 方法级缓存多种实现

Java Spring5之IOC容器

Spring 3.2 - 如何将 XML 中配置的 FlatFileItemWriter 注入 java 类中的参数化属性

Spring配置文件中注入复杂类型属性

Mybatis加入Ehcache支持