1.唠嗑
最近学了网上的springboot1.X的springboot整合redis实现缓存,自己在练习的时候才发现springboot2.x已经不支持教程里面的配置cacheManager了,网上找了很久,都失败了。最后在b站有一个视频看见了,实验成功了。
最终的成果是springboot整合Jpa、redis,配置redisconfig,实现缓存。
2.概念
3.springboot2.x配置cacheManager
找了很久,可以用的,希望能帮助到大家。
@Configuration
public class RedisConfig{
@Bean
@SuppressWarnings("all")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
//连接工厂
template.setConnectionFactory(factory);
// 序列化配置 解析任意对象
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
// json序列化利用ObjectMapper进行转义
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); //指定要序列化的域,filed,get和set、Any是包括private// 和public
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);//
jackson2JsonRedisSerializer.setObjectMapper(om);
// value序列化方式采用jackson
template.setValueSerializer(jackson2JsonRedisSerializer);
// hash的value序列化方式采用jackson
template.setHashValueSerializer(jackson2JsonRedisSerializer);
// 2.序列化String类型
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// key采用String的序列化方式
template.setKeySerializer(stringRedisSerializer);
// hash的key也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
template.afterPropertiesSet();
return template;
}
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory) {
RedisCacheManager redisCacheManager =
RedisCacheManager.builder(factory)
.cacheDefaults(defaultCacheConfig(10000))
.transactionAware()
.build();
return redisCacheManager;
}
private RedisCacheConfiguration defaultCacheConfig(Integer second) {
Jackson2JsonRedisSerializer<Object> serializer =
new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL,JsonAutoDetect.Visibility.ANY);
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
serializer.setObjectMapper(mapper);
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(second))
.serializeKeysWith(RedisSerializationContext
.SerializationPair
.fromSerializer(new StringRedisSerializer()))
.serializeValuesWith(
RedisSerializationContext
.SerializationPair
.fromSerializer(serializer))
.disableCachingNullValues();
return config;
}
}
4.说明
这个代码的例子在我的gitee上 地址为https://gitee.com/wistchen/spring-boot-learn 有兴趣的可以下载下来看看哦。
springboot整合Jpa学习来自how2java网站,但是该网站的例子是springboot1.x有些方法过时了,下面是我解决的网址,先替大家采坑了。
- https://blog.csdn.net/ssllkkyyaa/article/details/96967503 SpringBoot上2.x JPA
- https://www.cnblogs.com/ljincheng/p/12330749.html SpringBoot 上2.x JPA
- https://blog.csdn.net/huoji555/article/details/103606786 PageRequest 过期
- https://blog.csdn.net/Mirt_/article/details/80934312 2.x对缓存cacheManage有影响
- https://www.cnblogs.com/EveningWind/p/11617271.html
- https://blog.csdn.net/deoppressoliber/article/details/89204839 默认不适用jsp
- https://blog.csdn.net/weixin_43538859/article/details/85772742 redis连接失效