'Cannot find cache named 'xxxx' for Builder - ElasticCache AWS and Spring Boot
I am trying to connect my Spring Boot project to ElasticCache Redis in AWS. However, I get this error:
java.lang.IllegalArgumentException: Cannot find cache named 'XXX' for Builder[public <Class Name> <method Name>(java.lang.String)] caches=['xxxx'] | key='#key' | keyGenerator='' | cacheManager='' | cacheResolver='' | condition='' | unless='' | sync='false'
application.properties
spring.cache.type=redis
spring.redis.host=*****.*****.****.****.cache.amazonaws.com
spring.redis.port=6379
spring.redis.prefix=testing
spring.cache.cache-names=XXXXX
spring.redis.cluster.nodes=node_1, node_2, node_3
RedisConfig.java
@Configuration
@EnableCaching
public class RedisConfig {
@Value("${spring.redis.host}")
private String redisHostName;
@Value("${spring.redis.port}")
private int redisPort;
@Value("${spring.redis.prefix}")
private String redisPrefix;
@Bean
JedisConnectionFactory jedisConnectionFactory() {
System.out.println(redisHostName);
System.out.println(redisPort);
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(redisHostName, redisPort);
return new JedisConnectionFactory(redisStandaloneConfiguration);
}
@Bean(value = "redisTemplate")
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(jedisConnectionFactory());
return redisTemplate;
}
@Primary
@Bean(name = "cacheManager") // Default cache manager is infinite
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
return RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(RedisCacheConfiguration.defaultCacheConfig().prefixKeysWith(redisPrefix)).build();
}
}
UserDetailsServiceImpl.java
@Override
@Cacheable(value = "userdetails", key="{#userId}")
public User getUserDetails(String userId) {
User user =userDAO.getUserbyID(userId);
return user;
}
build.gradle
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-cache', version: '2.6.7'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-redis', version: '2.6.7'
implementation group: 'redis.clients', name: 'jedis', version: '3.7.1'
implementation group: 'org.springframework.cloud', name: 'spring-cloud-aws-dependencies', version: '2.2.6.RELEASE', ext: 'pom'
On invoking the API I get the below error:
java.lang.IllegalArgumentException: Cannot find cache named 'XXX' for Builder[public <Class Name> <method Name>(java.lang.String)] caches=['xxxx'] | key='#key' | keyGenerator='' | cacheManager='' | cacheResolver='' | condition='' | unless='' | sync='false'
Any idea where I am going wrong?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
