qkr7828
7 months ago
7 changed files with 131 additions and 114 deletions
@ -1,50 +1,55 @@
|
||||
//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);
|
||||
// }
|
||||
// };
|
||||
// }
|
||||
//}
|
||||
package kr.co.palnet.kac.app.config; |
||||
|
||||
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.CacheManager; |
||||
import org.springframework.cache.annotation.EnableCaching; |
||||
import org.springframework.context.annotation.AdviceMode; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
|
||||
import java.time.Duration; |
||||
|
||||
@Configuration |
||||
@EnableCaching(proxyTargetClass = true, mode = AdviceMode.PROXY) |
||||
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(10))) |
||||
.withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(10)))); |
||||
} |
||||
|
||||
@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); |
||||
cm.createCache("flight" , Eh107Configuration.fromEhcacheCacheConfiguration(CacheConfigurationBuilder.newCacheConfigurationBuilder(Object.class, Object.class, |
||||
ResourcePoolsBuilder.newResourcePoolsBuilder() |
||||
.heap(5000, EntryUnit.ENTRIES)) |
||||
.withSizeOfMaxObjectSize(500, MemoryUnit.B) |
||||
.withExpiry(ExpiryPolicyBuilder.timeToIdleExpiration(Duration.ofSeconds(10))) |
||||
.withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(20))))); |
||||
} |
||||
}; |
||||
} |
||||
} |
||||
|
@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" |
||||
maxBytesLocalHeap="300M" |
||||
updateCheck="false"> |
||||
<!-- CacheManager에 의해 관리되는 캐시의 메모리를 300M로 제한 --> |
||||
<!-- 임시저장 경로를 설정 --> |
||||
<diskStore path="java.io.tmpdir" /> |
||||
<!-- |
||||
Cache에 저장할 레퍼런스의 최대값을 100000으로 지정, |
||||
maxDepthExceededBehavior = "continue" : 초과 된 최대 깊이에 대해 경고하지만 크기가 조정 된 요소를 계속 탐색 |
||||
maxDepthExceededBehavior = "abort" : 순회를 중지하고 부분적으로 계산 된 크기를 즉시 반환 |
||||
--> |
||||
<sizeOfPolicy maxDepth="100000" maxDepthExceededBehavior="continue"/> |
||||
|
||||
<!-- default Cache 설정 (반드시 선언해야 하는 Cache) --> |
||||
<defaultCache |
||||
eternal="false" |
||||
timeToIdleSeconds="0" |
||||
timeToLiveSeconds="1200" |
||||
overflowToDisk="false" |
||||
diskPersistent="false" |
||||
diskExpiryThreadIntervalSeconds="120" |
||||
memoryStoreEvictionPolicy="LRU"> |
||||
</defaultCache> |
||||
|
||||
<!-- 사용하고자 하는 캐시 별 설정 --> |
||||
<cache name="LocalCacheData" |
||||
eternal="false" |
||||
timeToIdleSeconds="0" |
||||
timeToLiveSeconds="1200" |
||||
overflowToDisk="false" |
||||
diskPersistent="false" |
||||
diskExpiryThreadIntervalSeconds="120" |
||||
memoryStoreEvictionPolicy="LRU"> |
||||
</cache> |
||||
|
||||
<cache name="AuthMemberList" |
||||
eternal="false" |
||||
timeToIdleSeconds="0" |
||||
timeToLiveSeconds="1200" |
||||
overflowToDisk="false" |
||||
diskPersistent="false" |
||||
diskExpiryThreadIntervalSeconds="120" |
||||
memoryStoreEvictionPolicy="LRU"> |
||||
</cache> |
||||
</ehcache> |
Loading…
Reference in new issue