使用后置处理器BeanPostProcessor解决redis的序列化问题

BeanPostProcessor 此接口可以帮助我们在类完成自动导入以后,对自动导入类做一些逻辑的补充或配置的修改,示例:

springboot 默认的提供的 RedisTemplate使用的是 JdkSerializationRedisSerializer,现在使用后置处理器改变redis的储存方式

@RestController
@RequestMapping("redis")
public class RedisController {

    @Autowired
    private RedisTemplate<Object,Object> redisTemplate;

    @GetMapping("/get/value")
    public String getValue(@RequestParam(value="key")String key,@RequestParam(value="value")String value){
        redisTemplate.opsForValue().set(key,value);
        return (String) redisTemplate.opsForValue().get(key);
    }
}

加入后置处理:

@Component
//实现后置处理器接口
public class RedisConfig implements BeanPostProcessor {
    
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        //根据类的类型,名称进行判断,是否增加逻辑处理
        if(bean instanceof RedisTemplate){
            RedisTemplate redisTemplate= (RedisTemplate) bean;
            redisTemplate.setDefaultSerializer(new Jackson2JsonRedisSerializer(Object.class));
            return redisTemplate;
        }
        return bean;
    }
}

你可能感兴趣的:(使用后置处理器BeanPostProcessor解决redis的序列化问题)