我使用的是Spring启动(1.4.2.RELEASE)和Ehcache(2.4.3)
缓存正在开发环境中使用,但它没有在其他环境中使用(命中)(测试和产品)。
代码如下:
的pom.xml
< …
除非你有很多 ehcache.xml 在你的类路径中,它应该工作。 @EnableCaching 除非你的类路径中有一个JSR107兼容的实现(例如Ehcache 3),否则不会通过魔法工作。
ehcache.xml
@EnableCaching
你的代码有效。唯一奇怪的部分是你打电话给 getObject() 你自己。它仍然有效,但我会做。
getObject()
@Bean public CacheManager cacheManager(net.sf.ehcache.CacheManager cacheManager) { return new EhCacheCacheManager(cacheManager); } @Bean public EhCacheManagerFactoryBean cacheManagerFactory() { EhCacheManagerFactoryBean factoryBean = new EhCacheManagerFactoryBean(); factoryBean.setConfigLocation(new ClassPathResource("ehcache.xml")); factoryBean.setShared(true); return factoryBean; }
那就是说,事实上我会做一些更简单的事情:
@Configuration @EnableCaching public class CacheConfig extends CachingConfigurerSupport { @Bean @Override public CacheManager cacheManager() { return new EhCacheCacheManager(new net.sf.ehcache.CacheManager()); } }
另外,请注意它 的 真的真的 强> 很少有你真的需要一个共享缓存管理器。它已经在应用程序上下文中共享。因此,将它作为单身人士分享是非常罕见的(而且经常是危险的)。