|
|
|
@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.cache.annotation.EnableCaching; |
|
|
|
|
import org.springframework.context.annotation.Bean; |
|
|
|
|
import org.springframework.context.annotation.Configuration; |
|
|
|
|
import org.springframework.context.annotation.Profile; |
|
|
|
|
import org.springframework.data.redis.cache.RedisCacheConfiguration; |
|
|
|
|
import org.springframework.data.redis.cache.RedisCacheManager; |
|
|
|
|
import org.springframework.data.redis.connection.RedisConnectionFactory; |
|
|
|
@ -17,9 +18,12 @@ import org.springframework.data.redis.serializer.RedisSerializationContext;
|
|
|
|
|
import org.springframework.data.redis.serializer.StringRedisSerializer; |
|
|
|
|
|
|
|
|
|
import java.time.Duration; |
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
|
@Configuration |
|
|
|
|
@EnableCaching |
|
|
|
|
@Profile("!local") |
|
|
|
|
public class RedisCacheConfig { |
|
|
|
|
|
|
|
|
|
@Value("${spring.data.redis.host}") |
|
|
|
@ -41,59 +45,37 @@ public class RedisCacheConfig {
|
|
|
|
|
return lettuceConnectionFactory; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// @Bean
|
|
|
|
|
// public RedisCacheManager redisCacheManager(RedisConnectionFactory connectionFactory) {
|
|
|
|
|
// // local date time 역직렬화 위해 추가 코드
|
|
|
|
|
// ObjectMapper objectMapper = new ObjectMapper();
|
|
|
|
|
// objectMapper.registerModule(new JavaTimeModule());
|
|
|
|
|
// objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
|
|
|
|
|
// GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer(objectMapper);
|
|
|
|
|
//
|
|
|
|
|
// RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig()
|
|
|
|
|
// .entryTtl(Duration.ofSeconds(600))
|
|
|
|
|
// .disableCachingNullValues()
|
|
|
|
|
// .serializeKeysWith(
|
|
|
|
|
// RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())
|
|
|
|
|
// )
|
|
|
|
|
// .serializeValuesWith(
|
|
|
|
|
// RedisSerializationContext.SerializationPair.fromSerializer(genericJackson2JsonRedisSerializer)
|
|
|
|
|
// );
|
|
|
|
|
//
|
|
|
|
|
// Map<String, RedisCacheConfiguration> cacheConfigurations = new HashMap<>();
|
|
|
|
|
// for (CacheType value : CacheType.values()) {
|
|
|
|
|
// cacheConfigurations.put(value.name(),
|
|
|
|
|
// RedisCacheConfiguration.defaultCacheConfig()
|
|
|
|
|
// .prefixCacheNameWith("code")
|
|
|
|
|
// .entryTtl(Duration.ofSeconds(600))
|
|
|
|
|
// .disableCachingNullValues()
|
|
|
|
|
// .serializeKeysWith(
|
|
|
|
|
// RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())
|
|
|
|
|
// )
|
|
|
|
|
// .serializeValuesWith(
|
|
|
|
|
// RedisSerializationContext.SerializationPair.fromSerializer(genericJackson2JsonRedisSerializer)
|
|
|
|
|
// ));
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// return RedisCacheManager.RedisCacheManagerBuilder
|
|
|
|
|
// .fromConnectionFactory(connectionFactory)
|
|
|
|
|
// .cacheDefaults(configuration)
|
|
|
|
|
// .withInitialCacheConfigurations(cacheConfigurations).build();
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
@Bean(name = "redisCacheManager") |
|
|
|
|
@Bean(name = "customCacheManager") |
|
|
|
|
public RedisCacheManager redisCacheManager(RedisConnectionFactory cf) { |
|
|
|
|
ObjectMapper objectMapper = new ObjectMapper(); |
|
|
|
|
objectMapper.registerModule(new JavaTimeModule()); |
|
|
|
|
objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(), |
|
|
|
|
ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); |
|
|
|
|
GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer(objectMapper); |
|
|
|
|
|
|
|
|
|
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig() |
|
|
|
|
return RedisCacheManager |
|
|
|
|
.RedisCacheManagerBuilder |
|
|
|
|
.fromConnectionFactory(cf) |
|
|
|
|
.cacheDefaults(defaultConfig()) |
|
|
|
|
.withInitialCacheConfigurations(customConfigurationMap()) |
|
|
|
|
.build(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//캐시 설정 추가
|
|
|
|
|
private Map<String, RedisCacheConfiguration> customConfigurationMap() { |
|
|
|
|
Map<String, RedisCacheConfiguration> customConfigurationMap = new HashMap<>(); |
|
|
|
|
customConfigurationMap.put("code", defaultConfig().entryTtl(Duration.ofSeconds(10L))); |
|
|
|
|
customConfigurationMap.put("flight", defaultConfig().entryTtl(Duration.ofMinutes(1L))); |
|
|
|
|
return customConfigurationMap; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//기본설정
|
|
|
|
|
private RedisCacheConfiguration defaultConfig() { |
|
|
|
|
ObjectMapper objectMapper = new ObjectMapper(); |
|
|
|
|
objectMapper.registerModule(new JavaTimeModule()); |
|
|
|
|
objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(), |
|
|
|
|
ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); |
|
|
|
|
GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer(objectMapper); |
|
|
|
|
|
|
|
|
|
return RedisCacheConfiguration.defaultCacheConfig() |
|
|
|
|
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())) |
|
|
|
|
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(genericJackson2JsonRedisSerializer)) |
|
|
|
|
.entryTtl(Duration.ofMinutes(3L)); |
|
|
|
|
|
|
|
|
|
return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(cf).cacheDefaults(redisCacheConfiguration).build(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |