Как настроить метрики Dropwizard/CodaHale для ehCache в приложении Spring Boot?

Итак, вот моя проблема. Приложение My Spring Boot использует Hibernate/JPA и ehCache для кэширования 2-го уровня. Я бы хотел использовать ehCache с метриками Dropwizard/Coda-Hale, но я не совсем уверен, как это сделать. Если бы я вручную создавал экземпляры Cache, то все просто. Вы просто используете декоратор, как показано здесь. Но так как это Spring/Hibernate, я не могу контролировать кэши. Есть идеи, как мне это сделать?

1 ответ

Решение

Ну, я верю, что наконец понял это. Оказывается, добавление в Spring JavaConfig для cacheManager, возвращающего классы Spring, ehCacheCacheManager все еще можно использовать для доступа к базовым классам 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;
}
Другие вопросы по тегам