我试图在我的 Spring Boot 应用程序中使用两种不同类型的缓存,基于称为 I hvae 的 Rest API 将数据存储在我的缓存中。但是在项目部署阶段,我遇到了错误。
[main] 错误 osboot.SpringApplication - 应用程序启动失败 2020-06-30T11:15:17.05+0530 [APP/PROC/WEB/0] OUT java.lang.IllegalStateException: 没有指定 CacheResolver,也没有找到 CacheManager 类型的唯一 bean . 将一个标记为主要(或将其命名为“cacheManager”)或声明要使用的特定 CacheManager,作为默认值。
我可以在一个缓存管理器上指定@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;
}