[REDIS] 봄 4 일반적인 RedisTemplate을 건조
REDIS봄 4 일반적인 RedisTemplate을 건조
난 당신이 굉장 봄 4, 현재의 @Autowired 제네릭을 가질 수 있음을 읽었습니다.
나는과 같이, 일반적인 RestTemplate을 @Autowired 한하고자하는 추상적 인 RedisService 클래스가 있습니다 :
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 다음 @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를 확장 각 클래스는
@Service
public class MyTypeAService extends RedisService<MyTypeA> {
내 자바 설정 이러한 RedisTemplate @Beans을 생성 할 수있는 더 DRY 방법이 있습니까?
해결법
-
==============================
1.저도 같은 문제를 가지고 있었다. 당신은이에 대한 일반 콩을 작성하고 GenricJackson2JsonRedisSerializer를 사용할 수 있습니다. 문제는이 json으로 사용하여 나중에 작업에 직렬화에 대한 몇 가지 추가 데이터로 저장 될 것입니다.
저도 같은 문제를 가지고 있었다. 당신은이에 대한 일반 콩을 작성하고 GenricJackson2JsonRedisSerializer를 사용할 수 있습니다. 문제는이 json으로 사용하여 나중에 작업에 직렬화에 대한 몇 가지 추가 데이터로 저장 될 것입니다.
또 다른 방법은 Jackson2JsonRedisSerializer을 사용하는 것입니다하지만 내가하는 방법을 알아 내려고을 couldnt 일, 마녀의 제네릭 형식의 클래스 인스턴스를 필요로한다.
@Bean("objectRedisTemplate") public <T> RedisTemplate<String, T> objectRedisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, T> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); RedisSerializer<String> serializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(serializer); redisTemplate.setHashKeySerializer(serializer); redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); return redisTemplate; }
캐시 클래스의 사용법 :
@Autowired @Qualifier("objectRedisTemplate") private RedisTemplate<String, MyTypeA> redisTemplate;
from https://stackoverflow.com/questions/23208010/drying-up-a-generic-redistemplate-in-spring-4 by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 봄의 데이터 레디 스 HGETALL 작업 (0) | 2020.01.19 |
---|---|
[REDIS] 레디 스, 키 되세요 \ XAC \ 고정 된 \ x00부터 \ x05t \ x00부터 \ X06 봄 부팅 캐싱 (0) | 2020.01.19 |
[REDIS] 레디 스 연결 / 버퍼 크기 제한을 초과 (0) | 2020.01.19 |
[REDIS] NODE에서 레디 스 SCAN을 사용하여 (0) | 2020.01.19 |
[REDIS] 레디 스 펍 / 하위에 떨어 연결에서 복구 (0) | 2020.01.19 |