package com.itheima.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import java.time.Duration;
/**
* 自定义Redis配置类,进行序列化以及RedisTemplate设置
*/
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
/**
* 定制Redis API模板RedisTemplate
* @param redisConnectionFactory
* @return
*/
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
// 使用JSON格式序列化对象,对缓存数据key和value进行转换
Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
// 解决查询缓存转换异常的问题
ObjectMapper om = new ObjectMapper();
// 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
// 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jacksonSeial.setObjectMapper(om);
// 设置RedisTemplate模板API的序列化方式为JSON
template.setDefaultSerializer(jacksonSeial);
return template;
}
/**
* 定制Redis缓存管理器RedisCacheManager,实现自定义序列化并设置缓存时效
* @param redisConnectionFactory
* @return
*/
@Bean
public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
// 分别创建String和JSON格式序列化对象,对缓存数据key和value进行转换
RedisSerializer<String> strSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
// 解决查询缓存转换异常的问题
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jacksonSeial.setObjectMapper(om);
// 定制缓存数据序列化方式及时效
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofDays(7)) // 设置缓存有效期为1天
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(strSerializer))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jacksonSeial))
.disableCachingNullValues(); // 对空数据不进行缓存
RedisCacheManager cacheManager = RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(config).build();
return cacheManager;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
SpringBoot初学者综合项目实战——个人博客系统
共205个文件
png:51个
jpg:40个
js:35个
需积分: 31 3 下载量 127 浏览量
2021-12-06
14:58:43
上传
评论
收藏 14.77MB RAR 举报
温馨提示
Springboot初学者
资源详情
资源评论
资源推荐
收起资源包目录
SpringBoot初学者综合项目实战——个人博客系统 (205个子文件)
amazeui.flat.css 351KB
amazeui.css 350KB
amazeui.flat.min.css 327KB
amazeui.min.css 326KB
bootstrap.min.css 118KB
style.min.css 75KB
mditor.css 61KB
mditor.min.css 48KB
style.min.css 36KB
font-awesome.min.css 30KB
select2.css 18KB
select2.css 18KB
layer.css 14KB
select2.min.css 14KB
sweetalert2.min.css 14KB
dropzone.min.css 9KB
app.css 7KB
jquery.steps.css 6KB
toggles.css 5KB
admin.css 5KB
style.css 5KB
select2-bootstrap.css 3KB
select2-bootstrap.css 3KB
select2-bootstrap.min.css 3KB
multi-select.min.css 2KB
jquery.tagsinput.css 1KB
xcode.min.css 822B
xcode.min.css 822B
basic.min.css 752B
674f50d287a8c48dc19ba404d20fe713.eot 162KB
fontawesome-webfont.eot 59KB
loading.gif 64KB
loading-0.gif 6KB
select2-spinner.gif 2KB
select2-spinner.gif 2KB
select2-spinner.gif 2KB
loading-2.gif 2KB
loading-1.gif 701B
article_edit.html 7KB
comments.html 6KB
header.html 5KB
index.html 4KB
article_list.html 4KB
index.html 3KB
paging.html 3KB
header.html 3KB
login.html 3KB
articleDetails.html 1KB
footer.html 1KB
error_404.html 1KB
error_403.html 1KB
tale_comment.html 1KB
footer.html 653B
RedisConfig.java 4KB
Commons.java 4KB
ArticleResponseData.java 3KB
Article.java 3KB
MyUtils.java 2KB
Comment.java 2KB
Statistic.java 918B
StaticticsBo.java 699B
3.jpg 963KB
4.jpg 604KB
4.jpg 455KB
4.jpg 428KB
3.jpg 399KB
1.jpg 369KB
5.jpg 355KB
3.jpg 348KB
2.jpg 320KB
1.jpg 318KB
2.jpg 300KB
3.jpg 289KB
5.jpg 277KB
1.jpg 256KB
6.jpg 249KB
5.jpg 242KB
4.jpg 223KB
back3.jpg 204KB
2.jpg 193KB
1.jpg 188KB
4.jpg 178KB
2.jpg 170KB
3.jpg 157KB
back.jpg 157KB
5.jpg 129KB
6.jpg 111KB
1.jpg 109KB
back2.jpg 107KB
2.jpg 102KB
2.jpg 52KB
5.jpg 44KB
back_1.jpg 36KB
1.jpg 22KB
2.jpg 21KB
4.jpg 20KB
bloglogo.jpg 20KB
3.jpg 19KB
bg.jpg 19KB
me.jpg 12KB
共 205 条
- 1
- 2
- 3
记录在人间凑数的日子
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0