|
@@ -1,11 +1,20 @@
|
|
|
package com.rongwei.bscommon.sys.service.impl;
|
|
|
|
|
|
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
|
|
+import com.fasterxml.jackson.annotation.PropertyAccessor;
|
|
|
+import com.fasterxml.jackson.databind.DeserializationFeature;
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+import com.fasterxml.jackson.databind.SerializationFeature;
|
|
|
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
|
|
import com.rongwei.bscommon.sys.service.RedisService;
|
|
|
import com.rongwei.rwadmincommon.system.vo.SysUserVo;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
|
|
|
+import org.springframework.data.redis.serializer.RedisSerializer;
|
|
|
+import org.springframework.data.redis.serializer.StringRedisSerializer;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.Set;
|
|
@@ -41,7 +50,32 @@ public class RedisServiceImpl implements RedisService {
|
|
|
public boolean hasKey(String key) {
|
|
|
return redisTemplate.hasKey(key);
|
|
|
}
|
|
|
-
|
|
|
+ /**
|
|
|
+ * redis配置项初始化
|
|
|
+ * @param redisTemplate
|
|
|
+ */
|
|
|
+ @Autowired(required = false)
|
|
|
+ public void setRedisTemplate(RedisTemplate redisTemplate) {
|
|
|
+ RedisSerializer stringSerializer = new StringRedisSerializer();
|
|
|
+ //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
|
|
|
+ Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
|
|
|
+ ObjectMapper objectMapper = new ObjectMapper();
|
|
|
+ objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
|
|
+ objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
|
|
|
+ objectMapper.registerModule(new JavaTimeModule());
|
|
|
+ // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
|
|
|
+ objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
|
|
|
+ // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
|
|
|
+ objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
|
|
|
+ jacksonSeial.setObjectMapper(objectMapper);
|
|
|
+ // 值采用json序列化-------
|
|
|
+ redisTemplate.setValueSerializer(jacksonSeial);
|
|
|
+ redisTemplate.setKeySerializer(stringSerializer);
|
|
|
+ redisTemplate.setHashKeySerializer(stringSerializer);
|
|
|
+ redisTemplate.setHashValueSerializer(jacksonSeial);
|
|
|
+ redisTemplate.afterPropertiesSet();
|
|
|
+ this.redisTemplate = redisTemplate;
|
|
|
+ }
|
|
|
/**
|
|
|
* 根据 pattern 模糊查询,查所有传入 "*" 即可
|
|
|
*
|