Spring中EhCache的无XML配置
@Configuration@EnableCachingpublic class CachingConfig implements CachingConfigurer { @Bean(destroyMethod="shutdown") public net.sf.ehcache.CacheManager ehCacheManager() { CacheConfiguration cacheConfiguration = new CacheConfiguration(); cacheConfiguration.setName("myCacheName"); cacheConfiguration.setMemoryStoreEvictionPolicy("LRU"); cacheConfiguration.setMaxEntriesLocalHeap(1000); net.sf.ehcache.config.Configuration config = new net.sf.ehcache.config.Configuration(); config.addCache(cacheConfiguration); return net.sf.ehcache.CacheManager.newInstance(config); } @Bean @Override public CacheManager cacheManager() { return new EhCacheCacheManager(ehCacheManager()); } @Bean @Override public KeyGenerator keyGenerator() { return new SimpleKeyGenerator(); } @Bean @Override public CacheResolver cacheResolver() { return new SimpleCacheResolver(); } @Bean @Override public CacheErrorHandler errorHandler() { return new SimpleCacheErrorHandler(); }}
另外,为了进行测试,您可以使用一个简单的ConcurrentMapCache来运行,而无需XML,如下所示。
@Configuration@EnableCachingpublic class CachingConfig implements CachingConfigurer { @Bean @Override public CacheManager cacheManager() { SimpleCacheManager cacheManager = new SimpleCacheManager(); List<Cache> caches = new ArrayList<Cache>(); caches.add(new ConcurrentMapCache("myCacheName")); cacheManager.setCaches(caches); return cacheManager; } @Bean @Override public KeyGenerator keyGenerator() { return new SimpleKeyGenerator(); } @Bean @Override public CacheResolver cacheResolver() { return new SimpleCacheResolver(); } @Bean @Override public CacheErrorHandler errorHandler() { return new SimpleCacheErrorHandler(); }}
编辑:更新以在基础缓存上添加关闭方法
编辑:添加了错误处理程序和缓存解析器的配置
编辑:更改SimpleCacheResolver
解决CacheManager must not be null
问题的构造函数调用(Spring
v5.1 +)
@Configuration@EnableCachingpublic class CachingConfig implements CachingConfigurer { public static final String USER_CACHE_INSTANCE = "my-spring-ehcache"; private final CacheManager cacheManager; private final net.sf.ehcache.CacheManager ehCacheManager; public CachingConfig() { CacheConfiguration cacheConfiguration = new CacheConfiguration(); cacheConfiguration.setName(USER_CACHE_INSTANCE); cacheConfiguration.setMemoryStoreEvictionPolicy("LRU"); cacheConfiguration.setMaxEntriesLocalHeap(1000); net.sf.ehcache.config.Configuration config = new net.sf.ehcache.config.Configuration(); config.addCache(cacheConfiguration); this.ehCacheManager = net.sf.ehcache.CacheManager.newInstance(config); this.cacheManager = new EhCacheCacheManager(ehCacheManager); } @Bean(destroyMethod="shutdown") public net.sf.ehcache.CacheManager ehCacheManager() { return ehCacheManager; } @Bean @Override public CacheManager cacheManager() { return cacheManager; } @Bean @Override public KeyGenerator keyGenerator() { return new SimpleKeyGenerator(); } @Bean @Override public CacheResolver cacheResolver() { return new SimpleCacheResolver(cacheManager); } @Bean @Override public CacheErrorHandler errorHandler() { return new SimpleCacheErrorHandler(); }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)