微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 在Spring 4中干掉一个通用的RedisTemplate

我已经读过你可以在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

有没有更干的方法我可以使用我的Java配置创建这些Redistemplate @Beans?

最佳答案
我遇到过同样的问题.您可以为此创建一个通用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] 举报,一经查实,本站将立刻删除。

相关推荐