最近业务上遇到一个频繁查询的功能, 考虑继承Redis进行缓存, 使用的Spring JPA 和 Spring Boot , 编写了一个简易的序列化器!
@Configuration
public class MyRedisConfig {
@Bean
public RedisTemplate positionRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
RedisTemplate template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(TPosition.class);
template.setDefaultSerializer(serializer);
return template;
}
}
注入
@Autowired
RedisTemplate positionRedisTemplate;
测试
@org.junit.Test
public void contextLoads() {
TPosition one = positionRepository.getOne(1);
positionRedisTemplate.opsForValue().set("position", one);
}
遇到了序列化错误(堆栈异常如下)
org.springframework.data.redis.serializer.SerializationException: Could not write JSON: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.renben.platform.rim.entity.TPosition$HibernateProxy$gpEJrG6F["hibernateLazyInitializer"]); nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEAN