4

所以这是我的问题。我的 Spring Boot 应用程序使用 Hibernate/JPA 和 ehCache 进行二级缓存。我想用 Dropwizard/Coda-Hale 指标来检测 ehCache,但我不确定该怎么做。如果我手动创建 Cache 实例,那很简单。您只需使用此处所示的装饰器。但由于它是 Spring/Hibernate,我无法控制缓存。任何想法我将如何进行设置?

4

1 回答 1

5

好吧,我相信我终于想通了。事实证明,为返回 Spring 类 ehCacheCacheManager 的 cacheManager 添加 Spring JavaConfig 仍然可以用于访问底层的 ehCache 类并装饰它们。这是我如何让它工作的

@Bean
public EhCacheCacheManager ehCacheCacheManager() {
    final EhCacheCacheManager ehCacheCacheManager = new EhCacheCacheManager(ehCacheManagerFactoryBean().getObject());
    net.sf.ehcache.CacheManager cacheManager = ehCacheCacheManager.getCacheManager();
    String[] cacheNames = cacheManager.getCacheNames();
    for (String cacheName : cacheNames) {
        Cache cache = cacheManager.getCache(cacheName);
        cacheManager.replaceCacheWithDecoratedCache(cache, InstrumentedEhcache.instrument(metricRegistry, cache));
    }
    return ehCacheCacheManager;
}


@Bean
public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {

    EhCacheManagerFactoryBean cacheManagerFactoryBean = new EhCacheManagerFactoryBean();

    cacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
    cacheManagerFactoryBean.setShared(true);

    return cacheManagerFactoryBean;
}
于 2015-02-20T18:57:10.593 回答