package com.study.springboot.config;
import java.time.Duration;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
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 com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
//Redis的核心配置类,这个类提供了两个方法(其实提供了两个bean,这两个bean会加载到spring的context里边,供使用者进行调用)
@Configuration //这个标签,通常与@bean结合使用,当@bean使用到该类的方法上,代表将该方法做为一个bean交给了spring的context进行了管理。
@EnableCaching //允许使用我们的缓存cache
public class RedisConfig extends CachingConfigurerSupport{
@Bean //此时,将我们的redisTemplate加载到了我们的spring的上下文中,applicationContext
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory){
//现在同学们可以自由的发挥了,同学们可以自主实现我们的redisTemplate方法。
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
//序列化
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
//引入json串的转换类
Jackson2JsonRedisSerializer jasonJackson2JsonRedisSerializer =
new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
//设置我们的objectMapper的访问权限
om.setVisibility(PropertyAccessor.ALL,JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jasonJackson2JsonRedisSerializer.setObjectMapper(om);
//搞一下我们的redisTemplate
redisTemplate.setConnectionFactory(factory);
//redis key的序列化
redisTemplate.setKeySerializer(redisSerializer);
//value 序列化 使用的是jasonJackson2JsonRedisSerializer。我们的value大部分都是通过对象转化来的
redisTemplate.setValueSerializer(jasonJackson2JsonRedisSerializer);
//value的序列化 hashmap的序列化
redisTemplate.setHashValueSerializer(jasonJackson2JsonRedisSerializer);
return redisTemplate;
}
@Bean //自动 对我们的对象object进行一个缓存的管理,而不需要显示的书写代码,就可以对缓存进行管理。(主要的练习点)
public CacheManager cacheManager(RedisConnectionFactory factory){
//序列化
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
//引入json串的转换类
Jackson2JsonRedisSerializer jasonJackson2JsonRedisSerializer =
new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
//设置我们的objectMapper的访问权限
om.setVisibility(PropertyAccessor.ALL,JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jasonJackson2JsonRedisSerializer.setObjectMapper(om);
//序列化配置,乱码问题解决以及我们的缓存的时效性
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().
entryTtl(Duration.ofSeconds(1000)).
serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer)).
serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jasonJackson2JsonRedisSerializer)).
disableCachingNullValues();
RedisCacheManager cacheManager =
RedisCacheManager.builder(factory).cacheDefaults(config).build();
return cacheManager;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
springboot源码(java).zip (41个子文件)
springboot
mvnw.cmd 6KB
SpringConfigDictionary 50KB
.classpath 1KB
pom.xml 3KB
src
test
java
com
study
springboot
SpringbootApplicationTests.java 341B
main
resources
application.properties 4KB
templates
email.html 399B
mybatis
mapper
UserMapper.xml 881B
mybatis-config.xml 687B
java
com
study
springboot
SpringbootApplication.java 755B
mapper
UserMapper.java 1KB
repository
PosRepository.java 711B
MongoDAO.java 2KB
UserRepository.java 1KB
InfoRepository.java 802B
controller
MailController.java 1KB
MongoController.java 2KB
JPAController.java 2KB
LoginController.java 3KB
RabbitController.java 2KB
RedisController.java 3KB
service
UserService.java 3KB
MailService.java 4KB
MongoService.java 919B
common
ScheduledTask.java 777B
Task3.java 3KB
CommonUtils.java 221B
Task2.java 2KB
Task1.java 709B
dto
TokenDto.java 266B
BasicResponse.java 509B
Pos.java 681B
Info.java 1KB
Hobbies.java 210B
Student.java 874B
User.java 1KB
config
RedisConfig.java 4KB
RabbitConfig.java 754B
target
mvnw 9KB
.project 562B
.gitignore 295B
共 41 条
- 1
资源评论
JoePotter
- 粉丝: 35
- 资源: 197
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功