| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package com.jtzx.crm.config;
- import com.fasterxml.jackson.annotation.JsonTypeInfo;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.SerializationFeature;
- import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.ComponentScan;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.Primary;
- import org.springframework.data.redis.connection.RedisConnectionFactory;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.data.redis.core.StringRedisTemplate;
- import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
- import org.springframework.data.redis.serializer.StringRedisSerializer;
- @Configuration
- public class RedisConfig {
- @Bean
- @Primary // 加上 Primary 确保绝对优先
- @SuppressWarnings("all") // 压制泛型警告
- public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { // <-- 移除这里的 <String, Object> 泛型
- RedisTemplate<String, Object> template = new RedisTemplate<>();
- template.setConnectionFactory(connectionFactory);
- // 使用安全的序列化器
- ObjectMapper objectMapper = new ObjectMapper();
- objectMapper.registerModule(new JavaTimeModule());
- objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(),
- ObjectMapper.DefaultTyping.NON_FINAL,
- JsonTypeInfo.As.PROPERTY);
- objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
- GenericJackson2JsonRedisSerializer serializer = new GenericJackson2JsonRedisSerializer(objectMapper);
- // Key 使用字符串序列化器
- template.setKeySerializer(new StringRedisSerializer());
- template.setValueSerializer(serializer);
- template.setHashKeySerializer(new StringRedisSerializer());
- template.setHashValueSerializer(serializer);
- // Stream 相关序列化器
- template.setStringSerializer(new StringRedisSerializer());
- template.afterPropertiesSet();
- return template; // <-- 返回带有一切配置的原始 RedisTemplate Bean
- }
- @Bean
- @Primary // 加上 Primary 确保绝对优先
- @SuppressWarnings("all") // 压制泛型警告
- public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory connectionFactory) {
- return new StringRedisTemplate(connectionFactory);
- }
- }
|