【发布时间】:2014-06-06 03:27:39
【问题描述】:
我听说你可以在 Spring 4 中使用 @Autowired 泛型,这太棒了。
我有一个抽象的 RedisService 类,我希望在其中有一个通用的 RestTemplate @Autowired,如下所示:
public abstract class RedisService<T> implements InitializingBean {
private final String VALUE_KEY_PREFIX;
private final String SET_KEY;
@Autowired
private RedisTemplate<String, T> valueTemplate;
@Autowired
private StringRedisTemplate stringTemplate;
private SetOperations<String, String> setOperations;
private ValueOperations<String, T> valueOperations;
// and so on...
}
我的 valueTemplates 的 Java 配置为 @Autowired 然后看起来像:
@Bean
public RedisTemplate<String, MyTypeA> myTypeARedisTemplate() {
RedisTemplate<String, MyTypeA> template = new RedisTemplate<>();
template.setKeySerializer(stringRedisSerializer());
template.setHashKeySerializer(stringRedisSerializer());
template.setValueSerializer(new Jackson2JsonRedisSerializer<>(MyTypeA.class));
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
@Bean
public RedisTemplate<String, MyTypeB> myTypeBRedisTemplate() {
RedisTemplate<String, MyTypeB> template = new RedisTemplate<>();
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<MyTypeA> {
我可以用我的 Java 配置创建这些 RedisTemplate @Beans 吗?
【问题讨论】:
-
嗨@Tony 请问你能解决这个问题吗?如果有,请问如何?
标签: java spring generics redis dry