是否可以拆分ehcache配置文件?

时间:2012-06-27 12:13:15

标签: spring configuration ehcache

我正在写一个旨在与Spring和Ehcache一起使用的jar。 Spring需要为每个元素定义一个缓存,所以我计划为jar定义一个Ehcache,最好是作为jar中的一个资源,可以导入到app的主Ehcache配置中。但是,我对example Ehcache config file和我的Google搜索的阅读没有找到导入子Ehcache配置文件的任何方式。

有没有办法导入子Ehcache配置文件,还是有其他方法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

我做了类似的事情(替换我的Ehcache xml文件中的一些占位符 - 如果你愿意,导入语句或多或少是一个占位符)是要从Springs {{3更多或更少地复制)。并动态创建最终的Ehcache xml配置文件。

要在CacheManager中创建afterPropertiesSet()个实例,您只需移交指向您的配置的InputStream

@Override
public void afterPropertiesSet() throws IOException, CacheException {
    if (this.configLocation != null) {
        InputStreamSource finalConfig = new YourResourceWrapper(this.configLocation); // put your custom logic here
        InputStream is = finalConfig.getInputStream();
        try {
            this.cacheManager = (this.shared ? CacheManager.create(is) : new CacheManager(is));
        } finally {
            IOUtils.closeQuietly(is);
        }
    } else {
        // ...
    }
    // ...
}

对于我的过滤内容,我在内部使用ByteArrayResource来保留最终配置。

data = IOUtils.toString(source.getInputStream()); // get the original config (configLocation) as string
// do your string manipulation here
Resource finalConfigResource =  new ByteArrayResource(data.getBytes());

对于“真正的”模板,人们也可以考虑使用像FreeMarker这样的真实模板引擎(Spring支持)来做更多花哨的东西。