티스토리 뷰
spring의 version이 올라가면서 모든 설정은 java config로 하기를 권장하고 있다. 이에 따라서 관련된 글도 포스팅도 여러개 했었다.
EhCache도 프로젝트에 적용을 했는데 xml config로 되어 있어서 이도 java config로 전환하는 작업을 진행하였다.
AS-IS (xml config)
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
updateCheck="false">
<diskStore path="java.io.tmpdir" />
<cache name="getMenu"
maxEntriesLocalHeap="1000"
maxEntriesLocalDisk="10000"
eternal="false"
diskSpoolBufferSizeMB="20"
timeToIdleSeconds="1800" timeToLiveSeconds="1800"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off">
<persistence strategy="localTempSwap" />
</cache>
</ehcache>
xml config는 위와 같은 모습이다. EhCache에 대한 설정에 대한 정보는 이 글을 참조하도록 하자.
TO-BE (java config)
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import net.sf.ehcache.Cache;
import net.sf.ehcache.config.CacheConfiguration;
import net.sf.ehcache.config.CacheConfiguration.TransactionalMode;
import net.sf.ehcache.config.DiskStoreConfiguration;
import net.sf.ehcache.config.PersistenceConfiguration;
@EnableCaching
@Configuration
public class CacheConfig {
private net.sf.ehcache.CacheManager createCacheManager() {
net.sf.ehcache.config.Configuration configuration = new net.sf.ehcache.config.Configuration();
configuration.diskStore(new DiskStoreConfiguration().path("java.io.tmpdir"));
return net.sf.ehcache.CacheManager.create(configuration);
}
@Bean
public EhCacheCacheManager ehCacheCacheManager() {
net.sf.ehcache.CacheManager manager = this.createCacheManager();
Cache getMenuCache = new Cache(new CacheConfiguration()
.maxEntriesLocalHeap(1000)
.maxEntriesLocalDisk(10000)
.eternal(false)
.timeToIdleSeconds(1800)
.timeToLiveSeconds(1800)
.memoryStoreEvictionPolicy("LFU")
.transactionalMode(TransactionalMode.OFF)
.persistence(new PersistenceConfiguration().strategy(PersistenceConfiguration.Strategy.LOCALTEMPSWAP))
.name("getMenu")
);
manager.addCache(getMenuCache);
return new EhCacheCacheManager(manager);
}
}
이런식으로 xml config를 java config로 변환할 수 있다. 기존에는 CacheConfig 클래스를 만들고 단순히 @EnableCaching 만 달아주었다면 이곳에 EhCache에 관련된 설정을 해주었다. 이렇게 설정을 했다면 물론 기존 설정했던 xml config 파일은 지워도 된다. cache의 property 값은 이 글을 참조하도록 하자.
끝!
'Lang > Java' 카테고리의 다른 글
An illegal reflective access operation has occurred 오류 조치 (0) | 2021.09.30 |
---|---|
EhCache Clustering (분산캐시) 설정 및 사용방법 (with java config) (0) | 2021.08.31 |
ModelMapper를 이용해 DTO와 Entity Converting 하기 (0) | 2021.06.18 |
JAVA Base64 Encoding Decoding 예제 (0) | 2021.06.03 |
Java에서 Mobile Device 체크하기 (1) | 2021.05.21 |
댓글