首先激活Spring的缓存管理,XML配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cache="http://www.springframework.org/schema/cache"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.0.xsd">
<cache:annotation-driven cache-manager="cacheManager"/>
<bean id="ehcacheFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation">
<value>classpath:/service-ehcache.xml</value>
</property>
</bean>
<bean id="cacheManager" class="com.yiifaa.base.JmxStaticsEhCacheCacheManager">
<property name="cacheManager">
<ref bean="ehcacheFactory"/>
</property>
</bean>
</beans>
其次,替换默认的缓存管理器实现,Java代码如下:
package com.yiifaa.base;
import net.sf.ehcache.management.ManagementService;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.jmx.support.JmxUtils;
/**
* @since 0.1 2012-12-9,下午12:14:04
* 将缓存管理器注册为MBean,可动态观察
* @author <a href="mailto:ganhuan@legendsec.com">甘焕</a>
* @version 0.1
*/
public class JmxStaticsEhCacheCacheManager extends EhCacheCacheManager {
/* (non-Javadoc)
* @see org.springframework.cache.support.AbstractCacheManager#afterPropertiesSet()
*/
@Override
public void afterPropertiesSet() {
super.afterPropertiesSet();
// 注册MBean服务
ManagementService.registerMBeans(this.getCacheManager(), JmxUtils.locateMBeanServer(), false, false, false, true);
}
}
现在启动Spring,打开JConsole,就能观测到EhCache的缓存使用情况。