qkr7828
7 months ago
12 changed files with 284 additions and 100 deletions
@ -1,46 +1,50 @@
|
||||
package kr.co.palnet.kac.app.config; |
||||
|
||||
import java.time.Duration; |
||||
|
||||
import javax.cache.CacheManager; |
||||
|
||||
import org.ehcache.config.builders.CacheConfigurationBuilder; |
||||
import org.ehcache.config.builders.ExpiryPolicyBuilder; |
||||
import org.ehcache.config.builders.ResourcePoolsBuilder; |
||||
import org.ehcache.config.units.EntryUnit; |
||||
import org.ehcache.config.units.MemoryUnit; |
||||
import org.ehcache.jsr107.Eh107Configuration; |
||||
import org.hibernate.cache.jcache.ConfigSettings; |
||||
import org.springframework.boot.autoconfigure.cache.JCacheManagerCustomizer; |
||||
import org.springframework.boot.autoconfigure.orm.jpa.HibernatePropertiesCustomizer; |
||||
import org.springframework.cache.annotation.EnableCaching; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
@EnableCaching |
||||
@Configuration |
||||
public class CachingConfig { |
||||
|
||||
private final javax.cache.configuration.Configuration<Object, Object> jCacheConfiguration; |
||||
|
||||
public CachingConfig() { |
||||
this.jCacheConfiguration = Eh107Configuration.fromEhcacheCacheConfiguration(CacheConfigurationBuilder.newCacheConfigurationBuilder(Object.class, Object.class, |
||||
ResourcePoolsBuilder.newResourcePoolsBuilder() |
||||
.heap(10000, EntryUnit.ENTRIES)) |
||||
.withSizeOfMaxObjectSize(1000, MemoryUnit.B) |
||||
.withExpiry(ExpiryPolicyBuilder.timeToIdleExpiration(Duration.ofSeconds(200))) |
||||
.withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(400)))); |
||||
} |
||||
|
||||
|
||||
@Bean |
||||
public HibernatePropertiesCustomizer hibernatePropertiesCustomizer(CacheManager cacheManager) { |
||||
return hibernateProperties -> hibernateProperties.put(ConfigSettings.CACHE_MANAGER, cacheManager); |
||||
} |
||||
|
||||
@Bean |
||||
public JCacheManagerCustomizer cacheManagerCustomizer() { |
||||
return cm -> { |
||||
cm.createCache("code", jCacheConfiguration); |
||||
}; |
||||
} |
||||
} |
||||
//package kr.co.palnet.kac.app.config;
|
||||
//
|
||||
//import java.time.Duration;
|
||||
//
|
||||
//import javax.cache.CacheManager;
|
||||
//
|
||||
//import org.ehcache.config.builders.CacheConfigurationBuilder;
|
||||
//import org.ehcache.config.builders.ExpiryPolicyBuilder;
|
||||
//import org.ehcache.config.builders.ResourcePoolsBuilder;
|
||||
//import org.ehcache.config.units.EntryUnit;
|
||||
//import org.ehcache.config.units.MemoryUnit;
|
||||
//import org.ehcache.jsr107.Eh107Configuration;
|
||||
//import org.hibernate.cache.jcache.ConfigSettings;
|
||||
//import org.springframework.boot.autoconfigure.cache.JCacheManagerCustomizer;
|
||||
//import org.springframework.boot.autoconfigure.orm.jpa.HibernatePropertiesCustomizer;
|
||||
//import org.springframework.cache.annotation.EnableCaching;
|
||||
//import org.springframework.context.annotation.Bean;
|
||||
//import org.springframework.context.annotation.Configuration;
|
||||
//
|
||||
//@EnableCaching
|
||||
//@Configuration
|
||||
//public class CachingConfig {
|
||||
//
|
||||
// private final javax.cache.configuration.Configuration<Object, Object> jCacheConfiguration;
|
||||
//
|
||||
// public CachingConfig() {
|
||||
// this.jCacheConfiguration = Eh107Configuration.fromEhcacheCacheConfiguration(CacheConfigurationBuilder.newCacheConfigurationBuilder(Object.class, Object.class,
|
||||
// ResourcePoolsBuilder.newResourcePoolsBuilder()
|
||||
// .heap(10000, EntryUnit.ENTRIES))
|
||||
// .withSizeOfMaxObjectSize(1000, MemoryUnit.B)
|
||||
// .withExpiry(ExpiryPolicyBuilder.timeToIdleExpiration(Duration.ofSeconds(200)))
|
||||
// .withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(400))));
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Bean
|
||||
// public HibernatePropertiesCustomizer hibernatePropertiesCustomizer(CacheManager cacheManager) {
|
||||
// return hibernateProperties -> hibernateProperties.put(ConfigSettings.CACHE_MANAGER, cacheManager);
|
||||
// }
|
||||
//
|
||||
// @Bean
|
||||
// public JCacheManagerCustomizer cacheManagerCustomizer() {
|
||||
// return new JCacheManagerCustomizer() {
|
||||
// @Override
|
||||
// public void customize(javax.cache.CacheManager cm) {
|
||||
// cm.createCache("code", jCacheConfiguration);
|
||||
// }
|
||||
// };
|
||||
// }
|
||||
//}
|
||||
|
@ -0,0 +1,101 @@
|
||||
package kr.co.palnet.kac.app.config; |
||||
|
||||
import java.time.Duration; |
||||
|
||||
import org.springframework.beans.factory.annotation.Value; |
||||
import org.springframework.cache.CacheManager; |
||||
import org.springframework.cache.annotation.EnableCaching; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.data.redis.cache.RedisCacheConfiguration; |
||||
import org.springframework.data.redis.cache.RedisCacheManager; |
||||
import org.springframework.data.redis.connection.RedisConnectionFactory; |
||||
import org.springframework.data.redis.connection.RedisStandaloneConfiguration; |
||||
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; |
||||
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; |
||||
import org.springframework.data.redis.serializer.RedisSerializationContext; |
||||
import org.springframework.data.redis.serializer.StringRedisSerializer; |
||||
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo; |
||||
import com.fasterxml.jackson.databind.ObjectMapper; |
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; |
||||
|
||||
@Configuration |
||||
@EnableCaching |
||||
public class RedisCacheConfig { |
||||
|
||||
@Value("${spring.data.redis.host}") |
||||
private String redisHost; |
||||
|
||||
@Value("${spring.data.redis.port}") |
||||
private int redisPort; |
||||
|
||||
@Value("${spring.data.redis.password}") |
||||
private String redisPwd; |
||||
|
||||
@Bean |
||||
public RedisConnectionFactory redisConnectionFactory() { |
||||
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(); |
||||
redisStandaloneConfiguration.setHostName(redisHost); |
||||
redisStandaloneConfiguration.setPort(redisPort); |
||||
redisStandaloneConfiguration.setPassword(redisPwd); |
||||
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration); |
||||
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 |
||||
public CacheManager 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() |
||||
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())) |
||||
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(genericJackson2JsonRedisSerializer)) |
||||
.entryTtl(Duration.ofMinutes(3L)); |
||||
|
||||
return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(cf).cacheDefaults(redisCacheConfiguration).build(); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,14 @@
|
||||
package kr.co.palnet.kac.api.v1.common.code.model; |
||||
|
||||
import java.util.List; |
||||
|
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
|
||||
@Data |
||||
@NoArgsConstructor |
||||
public class CodeGroupRSWrapper { |
||||
|
||||
private List<CodeGroupRS> codeGroupRS; |
||||
|
||||
} |
@ -0,0 +1,12 @@
|
||||
package kr.co.palnet.kac.api.v1.common.code.model; |
||||
|
||||
import java.util.List; |
||||
|
||||
import lombok.Data; |
||||
|
||||
@Data |
||||
public class CodeRsWrapper { |
||||
|
||||
private List<CodeRS> CodeRS; |
||||
|
||||
} |
Loading…
Reference in new issue