Commit 29686df481e2a80f76fe9e85412388fa309ee0ab

Authored by zhangdaihao
1 parent 6d8696f4

修改redis配置,解决字典表无法使用问题

jeecg-boot/src/main/java/org/jeecg/config/RedisConfig.java
1 1 package org.jeecg.config;
2 2  
3 3 import java.lang.reflect.Method;
4   -import java.time.Duration;
5   -import java.util.ArrayList;
6   -import java.util.HashMap;
7   -import java.util.List;
8   -import java.util.Map;
9 4  
10 5 import javax.annotation.Resource;
11   -
12   -import org.springframework.cache.CacheManager;
13 6 import org.springframework.cache.annotation.CachingConfigurerSupport;
14 7 import org.springframework.cache.annotation.EnableCaching;
15   -import org.springframework.cache.concurrent.ConcurrentMapCache;
16 8 import org.springframework.cache.interceptor.KeyGenerator;
17   -import org.springframework.cache.support.SimpleCacheManager;
18 9 import org.springframework.context.annotation.Bean;
19 10 import org.springframework.context.annotation.Configuration;
20   -import org.springframework.data.redis.cache.RedisCacheConfiguration;
21   -import org.springframework.data.redis.cache.RedisCacheManager;
22   -import org.springframework.data.redis.cache.RedisCacheWriter;
23   -import org.springframework.data.redis.connection.RedisConnectionFactory;
24 11 import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
25 12 import org.springframework.data.redis.core.RedisTemplate;
26 13 import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
27   -import org.springframework.data.redis.serializer.RedisSerializationContext;
28 14 import org.springframework.data.redis.serializer.RedisSerializer;
29 15 import org.springframework.data.redis.serializer.StringRedisSerializer;
30   -
31   -import com.fasterxml.jackson.annotation.JsonAutoDetect;
32 16 import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
33 17 import com.fasterxml.jackson.annotation.PropertyAccessor;
34 18 import com.fasterxml.jackson.databind.ObjectMapper;
... ... @@ -46,7 +30,6 @@ public class RedisConfig extends CachingConfigurerSupport {
46 30 * 只需要讲注解上keyGenerator的值设置为keyGenerator即可</br>
47 31 * @return 自定义策略生成的key
48 32 */
49   - @Override
50 33 @Bean
51 34 public KeyGenerator keyGenerator() {
52 35 return new KeyGenerator() {
... ... @@ -63,6 +46,14 @@ public class RedisConfig extends CachingConfigurerSupport {
63 46 };
64 47 }
65 48  
  49 + // 这个注释不能放开,发现自定义缓存管理器,会导致实体解析失败
  50 + //TODO
  51 +// @Bean
  52 +// public CacheManager cacheManager() {
  53 +// RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(lettuceConnectionFactory);
  54 +// return builder.build();
  55 +// }
  56 +
66 57 /**
67 58 * RedisTemplate配置
68 59 */
... ... @@ -85,61 +76,5 @@ public class RedisConfig extends CachingConfigurerSupport {
85 76 redisTemplate.afterPropertiesSet();
86 77 return redisTemplate;
87 78 }
88   -
89   - /**
90   - * 此处的缓存到JAVA虚拟机内存,非存Redis
91   - */
92   - @Override
93   - @Bean
94   - public CacheManager cacheManager() {
95   - SimpleCacheManager cacheManager = new SimpleCacheManager();
96   - List<ConcurrentMapCache> list=new ArrayList<ConcurrentMapCache>();
97   - list.add(new ConcurrentMapCache("dictCache"));
98   - list.add(new ConcurrentMapCache("jeecgDemo"));
99   - list.add(new ConcurrentMapCache("permission"));
100   - cacheManager.setCaches(list);
101   - cacheManager.afterPropertiesSet();
102   - return cacheManager;
103   - }
104   -
105   -
106   - /**
107   - * Redis缓存支持设置缓存过期时间
108   - * @param redisConnectionFactory
109   - * @return
110   - */
111   - @Bean
112   - public RedisCacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory) {
113   - return new RedisCacheManager(
114   - RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory),
115   - this.getRedisCacheConfigurationWithTtl(3600), //3600秒,默认策略,未配置的 key 会使用这个
116   - this.getRedisCacheConfigurationMap() // 指定 key 策略
117   - );
118   - }
119   - /**
120   - * 指定redis缓存超时时间
121   - * @return
122   - */
123   - private Map<String, RedisCacheConfiguration> getRedisCacheConfigurationMap() {
124   - Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>();
125   - redisCacheConfigurationMap.put("dictTableCache", this.getRedisCacheConfigurationWithTtl(600));// 600秒(表数据字典只缓存10分钟)
126   -
127   - return redisCacheConfigurationMap;
128   - }
129   - private RedisCacheConfiguration getRedisCacheConfigurationWithTtl(Integer seconds) {
130   - Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
131   - ObjectMapper om = new ObjectMapper();
132   - om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
133   - om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
134   - jackson2JsonRedisSerializer.setObjectMapper(om);
135   -
136   - RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
137   - redisCacheConfiguration = redisCacheConfiguration.serializeValuesWith(
138   - RedisSerializationContext
139   - .SerializationPair
140   - .fromSerializer(jackson2JsonRedisSerializer)
141   - ).entryTtl(Duration.ofSeconds(seconds));
142 79  
143   - return redisCacheConfiguration;
144   - }
145 80 }
... ...