@Bean public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { // 配置redisTemplate RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); // 设置序列化 Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); jackson2JsonRedisSerializer.setObjectMapper(om); // key序列化 redisTemplate.setKeySerializer(new StringRedisSerializer()); // value序列化 redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); // Hash key序列化 redisTemplate.setHashKeySerializer(new StringRedisSerializer()); // Hash value序列化 redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; }
时间: 2024-03-04 22:49:48 浏览: 23
这段代码是用来配置RedisTemplate的,可以看出该RedisTemplate的key和hashKey序列化采用了StringRedisSerializer,而value和hashValue序列化采用了Jackson2JsonRedisSerializer。其中,Jackson2JsonRedisSerializer使用了ObjectMapper来实现Java对象和JSON字符串之间的相互转换。在配置ObjectMapper时,设置了默认可见性为所有属性可见,以及默认的对象类型为非final类型,并且将类型信息作为属性写入JSON字符串中。这些配置可以使得Redis中存储的数据更加直观、易读,并且可以支持更多类型的Java对象。返回的RedisTemplate可以用来进行Redis操作,比如存储、查询等。
相关问题
代码解释:@Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory){ RedisTemplate<String, Object> template = new RedisTemplate<>(); templa
这段代码是用于配置 Redis 的缓存,使用了 Spring 提供的缓存框架。具体解释如下:
- `@Configuration`:声明这个类是一个配置类,相当于传统的 XML 配置文件。
- `@EnableCaching`:启用缓存支持。
- `RedisConfig extends CachingConfigurerSupport`:继承了 `CachingConfigurerSupport` 类,这个类提供了一些缓存配置的默认实现,可以让我们重写需要的方法来实现自定义配置。
- `@Bean`:声明这个方法返回一个 Spring 管理的 Bean 对象。
- `RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory)`:定义了一个名为 `redisTemplate` 的 Bean,这个 Bean 的类型是 `RedisTemplate<String, Object>`,返回的是 RedisTemplate 对象。
- `RedisConnectionFactory factory`:声明了一个名为 `factory` 的参数,这个参数是 `RedisConnectionFactory` 类型,表示这个 Bean 需要一个 RedisConnectionFactory 对象作为参数。
- `RedisTemplate<String, Object> template = new RedisTemplate<>();`:创建一个 RedisTemplate 对象。
- `template.setConnectionFactory(factory)`:设置 RedisTemplate 对象的连接工厂,即上面传入的 RedisConnectionFactory 对象。
- `template.setValueSerializer(new GenericToStringSerializer<>(Object.class))`:设置 RedisTemplate 对象的值序列化器,这里使用了 `GenericToStringSerializer`,将任何类型的值转换为字符串后存储到 Redis 中。
- `return template`:返回 RedisTemplate 对象,这个对象将被 Spring 管理。
public class RedisCustomConfiguration { @Bean(name = "redisTemplate") public RedisTemplate<String,Object> initRedisTemplate(RedisConnectionFactory redisConnectionFactory){ RedisTemplate<String,Object> redisTemplate=new RedisTemplate<String,Object>(); redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.setKeySerializer(RedisSerializer.string()); redisTemplate.setValueSerializer(RedisSerializer.java()); redisTemplate.setHashKeySerializer(RedisSerializer.string()); redisTemplate.setHashValueSerializer(RedisSerializer.java()); return redisTemplate; } }解释一下
这段代码是一个 Redis 客户端的配置类,主要实现了 RedisTemplate 的初始化配置。在 Spring Boot 应用中,我们可以使用 RedisTemplate 来操作 Redis 数据库。这个类中的 initRedisTemplate 方法使用了 Spring 框架的注解 @Bean,将一个名为 "redisTemplate" 的 RedisTemplate 实例注入到 Spring 容器中。
在 RedisTemplate 的配置中,我们设置了连接工厂 RedisConnectionFactory,并将其注入到 RedisTemplate 中。接着我们使用 RedisSerializer 来序列化 RedisTemplate 的键和值,这里使用的是 string() 和 java() 方法。这些配置可以帮助我们更方便地操作 Redis 数据库。