1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package org.jeecg.config;
- import java.lang.reflect.Method;
- import javax.annotation.Resource;
- import org.springframework.cache.annotation.CachingConfigurerSupport;
- import org.springframework.cache.annotation.EnableCaching;
- import org.springframework.cache.interceptor.KeyGenerator;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
- import org.springframework.data.redis.serializer.RedisSerializer;
- import org.springframework.data.redis.serializer.StringRedisSerializer;
- import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
- import com.fasterxml.jackson.annotation.PropertyAccessor;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
- @Configuration
- @EnableCaching // 开启缓存支持
- public class RedisConfig extends CachingConfigurerSupport {
- @Resource
- private LettuceConnectionFactory lettuceConnectionFactory;
- /**
- * @description 自定义的缓存key的生成策略 若想使用这个key
- * 只需要讲注解上keyGenerator的值设置为keyGenerator即可</br>
- * @return 自定义策略生成的key
- */
- @Bean
- public KeyGenerator keyGenerator() {
- return new KeyGenerator() {
- @Override
- public Object generate(Object target, Method method, Object... params) {
- StringBuffer sb = new StringBuffer();
- sb.append(target.getClass().getName());
- sb.append(method.getName());
- for (Object obj : params) {
- sb.append(obj.toString());
- }
- return sb.toString();
- }
- };
- }
- // 这个注释不能放开,发现自定义缓存管理器,会导致实体解析失败
- //TODO
- // @Bean
- // public CacheManager cacheManager() {
- // RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(lettuceConnectionFactory);
- // return builder.build();
- // }
- /**
- * RedisTemplate配置
- */
- @Bean
- public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
- // 设置序列化
- Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
- ObjectMapper om = new ObjectMapper();
- om.setVisibility(PropertyAccessor.ALL, Visibility.ANY);
- om.enableDefaultTyping(DefaultTyping.NON_FINAL);
- jackson2JsonRedisSerializer.setObjectMapper(om);
- // 配置redisTemplate
- RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
- redisTemplate.setConnectionFactory(lettuceConnectionFactory);
- RedisSerializer<?> stringSerializer = new StringRedisSerializer();
- redisTemplate.setKeySerializer(stringSerializer);// key序列化
- redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);// value序列化
- redisTemplate.setHashKeySerializer(stringSerializer);// Hash key序列化
- redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);// Hash value序列化
- redisTemplate.afterPropertiesSet();
- return redisTemplate;
- }
- }
|