4

だからここに私の問題があります。私の Spring Boot アプリケーションは、第 2 レベルのキャッシュに Hibernate/JPA と ehCache を使用します。Dropwizard/Coda-Hale メトリクスを使用して ehCache を計測したいのですが、その方法がよくわかりません。Cache インスタンスを手動で作成していた場合、それは簡単です。hereのようにデコレータを使用するだけです。しかし、これは 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 に答える