| New file |
| | |
| | | package org.sxkj.gd.config; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonInclude; |
| | | import com.fasterxml.jackson.annotation.JsonTypeInfo; |
| | | import com.fasterxml.jackson.databind.MapperFeature; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.databind.PropertyNamingStrategy; |
| | | import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; |
| | | import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; |
| | | import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.data.redis.connection.RedisConnectionFactory; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.data.redis.repository.configuration.EnableRedisRepositories; |
| | | import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; |
| | | import org.springframework.data.redis.serializer.StringRedisSerializer; |
| | | import org.sxkj.common.constant.CommonConstant; |
| | | import org.sxkj.common.redis.RedisOpsUtils; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | |
| | | /** |
| | | * @author sean |
| | | * @version 1.0 |
| | | * @date 2022/4/19 |
| | | */ |
| | | @Configuration |
| | | @EnableRedisRepositories |
| | | public class RedisConfiguration { |
| | | |
| | | @Bean |
| | | public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { |
| | | RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); |
| | | redisTemplate.setConnectionFactory(factory); |
| | | |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | JavaTimeModule timeModule = new JavaTimeModule(); |
| | | timeModule.addDeserializer(LocalDateTime.class, |
| | | new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(CommonConstant.YYYY_MM_DD_HH_MM_SS))); |
| | | timeModule.addSerializer(LocalDateTime.class, |
| | | new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(CommonConstant.YYYY_MM_DD_HH_MM_SS))); |
| | | objectMapper.disable(MapperFeature.IGNORE_DUPLICATE_MODULE_REGISTRATIONS); |
| | | objectMapper.registerModules(timeModule); |
| | | objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(), |
| | | ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); |
| | | |
| | | objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); |
| | | objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); |
| | | objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); |
| | | |
| | | |
| | | StringRedisSerializer serializer = new StringRedisSerializer(); |
| | | redisTemplate.setKeySerializer(serializer); |
| | | redisTemplate.setHashKeySerializer(serializer); |
| | | |
| | | GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer(objectMapper); |
| | | redisTemplate.setValueSerializer(jsonRedisSerializer); |
| | | redisTemplate.setHashValueSerializer(jsonRedisSerializer); |
| | | redisTemplate.afterPropertiesSet(); |
| | | |
| | | |
| | | return redisTemplate; |
| | | |
| | | } |
| | | |
| | | /** |
| | | * set 注入redis 到 工具 |
| | | * @param redisTemplate redisTemplate |
| | | * @return 1 |
| | | */ |
| | | @Bean(value = "redisOpsUtils") |
| | | @ConditionalOnClass(value = RedisTemplate.class) |
| | | public RedisOpsUtils idempotentAspectBean(RedisTemplate<String, Object> redisTemplate) { |
| | | RedisOpsUtils.setRedisTemplate(redisTemplate); |
| | | return new RedisOpsUtils(); |
| | | } |
| | | |
| | | } |