diff --git a/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheFactoryBean.java b/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheFactoryBean.java index cc90f227b26..4806cddb159 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheFactoryBean.java +++ b/spring-context-support/src/main/java/org/springframework/cache/ehcache/EhCacheFactoryBean.java @@ -38,6 +38,7 @@ import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; /** * {@link FactoryBean} that creates a named EhCache {@link net.sf.ehcache.Cache} instance @@ -64,6 +65,11 @@ import org.springframework.util.Assert; */ public class EhCacheFactoryBean implements FactoryBean, BeanNameAware, InitializingBean { + // EhCache's setStatisticsEnabled(boolean) available? Not anymore as of EhCache 2.7... + private static final boolean setStatisticsAvailable = + ClassUtils.hasMethod(Ehcache.class, "setStatisticsEnabled", boolean.class); + + protected final Log logger = LogFactory.getLog(getClass()); private CacheManager cacheManager; @@ -275,7 +281,9 @@ public class EhCacheFactoryBean implements FactoryBean, BeanNameAware, /** * Set whether to enable EhCache statistics on this cache. - * @see net.sf.ehcache.Cache#setStatisticsEnabled + *

Note: As of EhCache 2.7, statistics are enabled by default, and cannot be turned off. + * This setter therefore has no effect in such a scenario. + * @see net.sf.ehcache.Ehcache#setStatisticsEnabled */ public void setStatisticsEnabled(boolean statisticsEnabled) { this.statisticsEnabled = statisticsEnabled; @@ -283,7 +291,9 @@ public class EhCacheFactoryBean implements FactoryBean, BeanNameAware, /** * Set whether to enable EhCache's sampled statistics on this cache. - * @see net.sf.ehcache.Cache#setSampledStatisticsEnabled + *

Note: As of EhCache 2.7, statistics are enabled by default, and cannot be turned off. + * This setter therefore has no effect in such a scenario. + * @see net.sf.ehcache.Ehcache#setSampledStatisticsEnabled */ public void setSampledStatisticsEnabled(boolean sampledStatisticsEnabled) { this.sampledStatisticsEnabled = sampledStatisticsEnabled; @@ -346,11 +356,14 @@ public class EhCacheFactoryBean implements FactoryBean, BeanNameAware, this.cacheManager.addCache(rawCache); } - if (this.statisticsEnabled) { - rawCache.setStatisticsEnabled(true); - } - if (this.sampledStatisticsEnabled) { - rawCache.setSampledStatisticsEnabled(true); + // Only necessary on EhCache <2.7: As of 2.7, statistics are on by default. + if (setStatisticsAvailable) { + if (this.statisticsEnabled) { + rawCache.setStatisticsEnabled(true); + } + if (this.sampledStatisticsEnabled) { + rawCache.setSampledStatisticsEnabled(true); + } } if (this.disabled) { rawCache.setDisabled(true);