Spring Redis:java.lang.String类不能转换为@Cacheable方法中的java.util.List类
我需要在返回值列表的方法中添加Redis缓存 我以本教程为基础 例外情况表明了这一点Spring Redis:java.lang.String类不能转换为@Cacheable方法中的java.util.List类,spring,redis,Spring,Redis,我需要在返回值列表的方法中添加Redis缓存 我以本教程为基础 例外情况表明了这一点 java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.List (java.lang.String and java.util.List are in module java.base of loader 'bootstrap') at @Cacheable(cacheNames
java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.List (java.lang.String and java.util.List are in module java.base of loader 'bootstrap')
at
@Cacheable(cacheNames = "customerDetailByParam", key="{#searchParams.toString()}")
@Retryable(value = { HttpServerErrorException.class }, maxAttempts = RETRY_ATTEMPTS, backoff = @Backoff(delay = 5000))
public List<ObjectResponse> searchCustomerDetailByParam(MultiValueMap<String, String> searchParams)
我能够修复将模板更改为以下配置的问题
@Bean
public RedisTemplate<String, Object> redisTemplate() {
final RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
@Bean
公共RedisTemplate RedisTemplate(){
最终RedisTemplate=新RedisTemplate();
setKeySerializer(新的StringRedisSerializer());
setHashKeySerializer(新的StringRedisSerializer());
setValueSerializer(新的GenericJackson2JsonRedisSerializer());
setConnectionFactory(jedisConnectionFactory());
返回模板;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ObjectResponse implements Serializable {
@JsonProperty("id")
private String customerId;
@JsonProperty("name")
@JsonAlias("full_name")
private String customerName;
private String document;
private String email;
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
final RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setConnectionFactory(jedisConnectionFactory());
return template;
}