我在Spring + Hibernate中实现了应用程序。为了优化ORM操作,我接着使用this教程来启用对Ehcache的监控:
@EnableWebMvc
@EnableSpringDataWebSupport
@EnableCaching
...
public class SpringWebConfig extends WebMvcConfigurerAdapter {
....
@Bean
public EhCacheCacheManager ehCacheManager() {
EhCacheCacheManager cacheManager = new EhCacheCacheManager();
cacheManager.setCacheManager((net.sf.ehcache.CacheManager) ehCacheManagerFactory().getObject());
return cacheManager;
}
@Bean
public EhCacheManagerFactoryBean ehCacheManagerFactory() {
EhCacheManagerFactoryBean cmfb = new EhCacheManagerFactoryBean();
cmfb.setConfigLocation(new ClassPathResource("ehcache.xml"));
cmfb.setShared(true);
return cmfb;
}
@Bean
public ManagementService managementService() {
return new ManagementService(ehCacheManager().getCacheManager(), mBeanServer(), true, true, true, true);
}
@Bean
public MBeanServer mBeanServer() {
MBeanServer bean = ManagementFactory.getPlatformMBeanServer();
return bean;
}
}
但是我在jConsole中看不到任何ehache bean:
你知道我错过了什么来启用统计数据吗?
答案 0 :(得分:1)
问题来自于您只是创建ManagementService
而不是初始化它。
您的managementService
方法需要在创建的init()
上调用ManagementService
方法。
除非您出于其他目的有效地需要访问ManagementService
,否则不需要将其公开为bean,您可以在{{1}内部使用静态ManagementService.registerMBeans(CacheManager, MBeanServer, boolean, boolean, boolean, boolean)
来替换它。 }或ehCacheManagerFactory()
方法。
静态方法创建ehCacheManager()
并初始化它。