我正尝试在我的Spring启动应用程序中使用两种不同类型的缓存,这两种缓存基于名为I hvae的Rest API来将数据存储在缓存中。但是在项目部署阶段,我得到了下面的错误。
主要错误o.s.boot.SpringApplication -应用程序启动失败2020-06-30T11:15:17.05+0530 APP/PROC/WEB/0输出java.lang.IllegalStateException:未指定CacheResolver,且未找到CacheManager类型的唯一bean。将其中一个标记为主(或将其命名为' CacheManager '),或者声明一个要使用的特定CacheManager,作为默认a。
我可以在一个缓存管理器上指定@Primary吗?我希望它不会停止将数据存储到另一个缓存中。或者他们是做这个的更好的方法?
CacheConfig.java
@Profile("cloud")
public class CacheConfig extends AbstractCloudConfig {
@Autowired
Environment env;
@Bean
public RedisConnectionFactory brRedisFactory() {
return connectionFactory().redisConnectionFactory(env.getProperty("redis_cache"));
}
@Bean
public RedisTemplate<String, Object> brRedisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
redisTemplate.setConnectionFactory(brRedisFactory());
return redisTemplate;
}
@Bean(name = "firstCacheMngr")
public CacheManager cacheManager() {
RedisCacheManager cacheManager = new RedisCacheManager(brRedisTemplate());
cacheManager.setUsePrefix(true);
cacheManager.setTransactionAware(true);
return cacheManager;
}
@Bean(name = "secondCacheMngr")
public CacheManager springCacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(Arrays.asList(new ConcurrentMapCache("secondCache")));
return cacheManager;
}
}这就是我在redis缓存中存储数据的方式-
@Cacheable(value="redis-cache",key ="#customerId",cacheManager = "firstCacheMngr")
public CustomerInfo retriveCustomerdetails(String customerId
String quarterEndDate) {
//Calling Rest API
}
return customerInfo;
}发布于 2020-06-30 22:20:10
您可以将一个放入@Primary,然后使用@Qualifier注入另一个
@Bean(name = "firstCacheMngr")
public CacheManager cacheManager() {
RedisCacheManager cacheManager = new RedisCacheManager(brRedisTemplate());
cacheManager.setUsePrefix(true);
cacheManager.setTransactionAware(true);
return cacheManager;
}
@Bean(name = "secondCacheMngr")
@Primary
public CacheManager springCacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(Arrays.asList(new ConcurrentMapCache("secondCache")));
return cacheManager;
}然后使用redisCachManager作为
@Autowired
@Qualifier("firstCacheMngr")
private CacheManager cacheManager;https://stackoverflow.com/questions/62651305
复制相似问题