【问题标题】:How do I configure Dropwizard/CodaHale metrics for ehCache in Spring Boot application?如何在 Spring Boot 应用程序中为 ehCache 配置 Dropwizard/CodaHale 指标?
【发布时间】:2015-04-22 08:28:51
【问题描述】:

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

【问题讨论】:

    标签: hibernate spring-boot ehcache codahale-metrics


    【解决方案1】:

    好吧,我相信我终于弄明白了。事实证明,为返回 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;
    }
    

    【讨论】:

    • 是的,而且无论何时在任何地方使用缓存,都需要使用原生的 EhCache 管理器来调用 getEhCache 而不是 getCache,因为 getEhCache 返回的是修饰的缓存,而调用 getCache 不会。见ehcache.org/apidocs/2.8.4/net/sf/ehcache/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 2019-11-03
    • 2018-01-18
    • 2017-03-05
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多