我已经读过你可以在Spring 4中拥有@Autowired泛型,这很棒.
我有一个抽象的RedisService类,我希望@Autowired是一个通用的RestTemplate,如下所示:
public abstract class RedisServicestemplatestemplate stringTemplate;
private Setoperationsetoperations;
private ValueOperations
我的Java配置为valueTemplates为@Autowired然后看起来像:
@Bean
public Redistemplatestemplate() {
Redistemplatestemplate<>();
template.setKeySerializer(stringRedisSerializer());
template.setHashKeySerializer(stringRedisSerializer());
template.setValueSerializer(new Jackson2JsonRedisSerializer<>(MyTypeA.class));
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
@Bean
public Redistemplatestemplate() {
Redistemplatestemplate<>();
template.setKeySerializer(stringRedisSerializer());
template.setHashKeySerializer(stringRedisSerializer());
template.setValueSerializer(new Jackson2JsonRedisSerializer<>(MyTypeB.class));
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
// ... for N MyType classes.
扩展RedisService< T>的每个类.类看起来像:
@Service
public class MyTypeAService extends RedisService
最佳答案
我遇到过同样的问题.您可以为此创建一个通用bean,并使用GenricJackson2JsonRedisSerializer.问题是,通过使用它,json将与一些额外的数据一起保存,以便反序列化在以后工作.
另一种方法是使用Jackson2JsonRedisSerializer但它需要泛型类的Class实例才能工作,我无法弄清楚如何获得.
@Bean("objectRedistemplate")
public stemplatestemplate(RedisConnectionFactory redisConnectionFactory) {
Redistemplatestemplate = new Redistemplate<>();
redistemplate.setConnectionFactory(redisConnectionFactory);
RedisSerializerdisSerializer();
redistemplate.setKeySerializer(serializer);
redistemplate.setHashKeySerializer(serializer);
redistemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return redistemplate;
}
缓存类的用法:
@Autowired
@Qualifier("objectRedistemplate")
private Redistemplatestemplate;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。