灰灰鼠精灵 发表于 2018-11-3 08:36:20

SpringBoot使用NoSQL——Redis的使用

import java.lang.reflect.Method;  import org.springframework.cache.CacheManager;
  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.cache.RedisCacheManager;
  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.Jackson2JsonRedisSerializer;
  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;
  @Configuration
  @EnableCaching

  public>  @Bean
  public KeyGenerator keyGenerator() {
  return new KeyGenerator() {
  @Override
  public Object generate(Object target, Method method, Object... params) {
  StringBuilder sb = new StringBuilder();
  sb.append(target.getClass().getName());
  sb.append(method.getName());
  for (Object obj : params) {
  sb.append(obj.toString());
  }
  return sb.toString();
  }
  };
  }
  @Bean
  public CacheManager cacheManager(@SuppressWarnings("rawtypes") RedisTemplate redisTemplate) {
  RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
  // 失效时间(秒),默认不失效
  cacheManager.setDefaultExpiration(60);
  return cacheManager;
  }
  @Bean
  public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
  RedisTemplate redisTemplate = new RedisTemplate();
  redisTemplate.setConnectionFactory(factory);
  redisTemplate.setKeySerializer(new StringRedisSerializer());
  redisTemplate.setValueSerializer(buildJackson2JsonRedisSerializer());
  redisTemplate.afterPropertiesSet();
  return redisTemplate;
  }
  @Bean
  public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory factory) {
  StringRedisTemplate stringRedisTemplate = new StringRedisTemplate(factory);
  stringRedisTemplate.setDefaultSerializer(new StringRedisSerializer());
  stringRedisTemplate.afterPropertiesSet();
  return stringRedisTemplate;
  }
  private Jackson2JsonRedisSerializer buildJackson2JsonRedisSerializer() {
  Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
  ObjectMapper om = new ObjectMapper();
  om.setVisibility(PropertyAccessor.ALL, Visibility.ANY);
  om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
  jackson2JsonRedisSerializer.setObjectMapper(om);
  return jackson2JsonRedisSerializer;
  }
  }

页: [1]
查看完整版本: SpringBoot使用NoSQL——Redis的使用