前言:
在SpringBoot_Cache中,会默认使用SimpleCacheManager。
但是笔者遇到一个问题,就是当前项目中也引用了redis的maven依赖,导致Cache使用了JedisManager,笔者还是想使用默认的SimpleCacheManager
这个时候就需要我们手动生成SimpleCacheManager的bean,则Cache会强制使用该bean
关于SpringBoot_Cache的使用笔者就不再赘述,读者可参考网络文章。
解决方案:
创建一个Config类,然后主动生成SimpleCacheManager,代码如下
@Configuration
public class CacheManagerConfig {
@Bean("cacheManager")
// List会主动搜索Cache的实现bean,并添加到caches中
public SimpleCacheManager cacheManager(List caches){
SimpleCacheManager simpleCacheManager = new SimpleCacheManager();
simpleCacheManager.setCaches(caches);
return simpleCacheManager;
}
@Bean("stockDetail")
public ConcurrentMapCacheFactoryBean stockDetail(){
ConcurrentMapCacheFactoryBean stockDetail = new ConcurrentMapCacheFactoryBean();
// 如果用户设置名称为stockDetail的缓存,则需要添加这样的一个bean
stockDetail.setName("stockDetail");
return stockDetail;
}
@Bean("detailMsg")
public ConcurrentMapCacheFactoryBean detailMsg(){
ConcurrentMapCacheFactoryBean stockDetail = new ConcurrentMapCacheFactoryBean();
// 如果用户设置名称为detailMsg的缓存,则需要添加这样的一个bean
stockDetail.setName("detailMsg");
return stockDetail;
}
}
注意:如果读者在使用@Cache的时候,需要多个不同命名的cache时,需添加多个ConcurrentMapCacheFactoryBean