我目前正在为一个由许多不同的小模块组成的应用程序编写一些监控代码,其中许多模块都使用了 EhCache。我的目标是从应用程序中的每个缓存中收集有关命中率、缓存内容等的统计信息。但是,我在实现此功能时遇到了一些麻烦,因为启用统计信息是 EhCache 中的一个可选功能。我正在寻找一种以自动方式为所有缓存启用统计信息的方法,以便维护不同模块的开发人员不必总是记住启用它们。
我可以在 JavaDocs 中找到最接近的东西(但这仍然不起作用):
cacheManager.getDefaultCacheConfiguration().setStatisticsEnabled(true);
该方法调用仅启用默认缓存的统计信息,而其余缓存不会受到影响。
我的另一个想法是包装 CacheManager 以拦截创建缓存的调用并自动将它们加入统计信息。不幸的是,CacheManager 是一个类而不是一个接口,因此这样的解决方案需要大量代码并且很脆弱——每次随着 EhCache 的发展添加/删除公共方法时,我都必须更新我的子类。
有没有人遇到过类似的问题?如果是这样,您是如何解决的?非常感谢...