SpringBoot中1.0、2.0中自定义缓存的区别

1、SpringBoot1.0中

//自定义缓存文本
@Bean
public RedisTemplate<Object, Employee> empredisTemplate(RedisConnectionFactory redisConnectionFactory) {
	RedisTemplate<Object, Employee> template = new RedisTemplate<>();
	template.setConnectionFactory(redisConnectionFactory);
	Jackson2JsonRedisSerializer<Employee> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Employee.class);
	template.setDefaultSerializer(jackson2JsonRedisSerializer);
	return template;
}
//自定义CacheManager
@Bean
public RedisCacheManager empCacheManager(RedisTemplate<Object,Employee> empRedisTemplate){
	RedisCacheManager cacheManager = new RedisCacheManager(empRedisTemplate);
	cacheManager.setUsePrefix(true);
	
	return cacheManager;
}

2、SpringBoot2.0中

@Bean
public RedisCacheManager employeeCacheManager(RedisConnectionFactory redisConnectionFactory){
    RedisSerializer<String> redisSerializer = new StringRedisSerializer();
    Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);

    //解决查询缓存转换异常的问题
    ObjectMapper om = new ObjectMapper();
    om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
    jackson2JsonRedisSerializer.setObjectMapper(om);

    // 配置序列化(解决乱码的问题)
    RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
            .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
            .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))
            .disableCachingNullValues();

    return  RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(config).build();
}

3、直接操作缓存—使用缓存管理器得到缓存,进行api调用

//指定某个缓存管理器
@Qualifier("myCacheManager")
@Autowired
RedisCacheManager myCacheManager;

public Department getDeptById(Integer id){
    System.out.println("查询部门" + id);

    Department department = departmentMapper.getDeptById(id);

    //获取某个缓存
    Cache dept = myCacheManager.getCache("dept");
    dept.put("1",department);

    return department;
}

区别:
通过代码可以看到主要区别就是RedisCacheManager的创建流程,其中SpringBoot1.0中的解决方案是对于单一的对象缓存的解决,而SpringBoot2.0中对于对象的解决是基于全局的解决方案,这也算是一个比较大的改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值