Как настроить метрики 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;
}