我正在编写一个旨在与 Spring 和 Ehcache 一起使用的 jar。Spring 要求为每个元素定义一个缓存,因此我计划为 jar 定义一个 Ehcache,最好作为 jar 中的资源,可以导入到应用程序的主 Ehcache 配置中。但是,我对示例 Ehcache 配置文件的阅读和我的 Google 搜索并没有找到任何导入子 Ehcache 配置文件的方法。
有没有办法导入一个子 Ehcache 配置文件,或者有没有其他方法可以解决这个问题?
我正在编写一个旨在与 Spring 和 Ehcache 一起使用的 jar。Spring 要求为每个元素定义一个缓存,因此我计划为 jar 定义一个 Ehcache,最好作为 jar 中的资源,可以导入到应用程序的主 Ehcache 配置中。但是,我对示例 Ehcache 配置文件的阅读和我的 Google 搜索并没有找到任何导入子 Ehcache 配置文件的方法。
有没有办法导入一个子 Ehcache 配置文件,或者有没有其他方法可以解决这个问题?
我做了类似的事情(替换我的 Ehcache xml 文件中的一些占位符 - 如果您愿意,导入语句或多或少是一个占位符)是从 Springs 扩展(或多或少的副本)EhCacheManagerFactoryBean
并创建最终的 Ehcache xml即时配置文件。
要在您中创建 CacheManager
实例,afterPropertiesSet()
只需交出InputStream
指向您的配置的 a。
@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 {
// ...
}
// ...
}
对于我的过滤内容,我在内部使用 aByteArrayResource
来保留最终配置。
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 支持)这样的真正模板引擎来做更多花哨的事情。