이번 포스팅은 EHCache 사용설정 및 구현 방법에 대해 작성하도록 하겠습니다.
환경은 SpringBoot + maven + EHcache 3 버전 입니다.
특히 EHCache3버전의 경우 2 버전 대와 달리 JSR-107 호환성을 제공하기 때문에 표준을 기반으로 개발되었습니다.
EHCache 사용을 위해 아래 dependency 등록
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.6.2</version>
</dependency>
JSR-107 API 사용을 위해 아래 dependency 등록
<dependency>
<groupId>javax.cache</groupId>
<artifactId>cache-api</artifactId>
<version>1.1.0</version>
</dependency>
스프링 부트를 사용하므로 아래 dependency를 등록
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
특히 위 spring-boot-starter-cache의 경우 CacheManager 등 스프링에서 지원하는 캐시 관련 bean들을 자동 생성 해줍니다.
또한, 버전의 경우 각자 스프링부트 프로젝트 버전에 맞추어 설정해주시면 됩니다.
위와 같이 Maven dependency 설정이 완료되었다면 EHCache에 대한 설정을 해주어야 합니다.
설정의 경우 xml 파일 혹은 스프링의 CacheManger, Cache를 사용하여 코드로 설정해주는 방법이 존재합니다.
저의 경우 xml 파일을 사용하는 설정하는 것이 조금 더 편리함을 느껴 xml 기준으로 진행하도록 하겠습니다.
<config
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns='http://www.ehcache.org/v3'
xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core.xsd">
(1) <cache alias="foo">
(2) <key-type>java.lang.String</key-type>
(2) <value-type>java.lang.String</value-type>
<resources>
(3) <heap unit="entries">20</heap>
(4) <offheap unit="MB">10</offheap>
</resources>
</cache>
(5) <cache-template name="myDefaults">
<key-type>java.lang.Long</key-type>
<value-type>java.lang.String</value-type>
<heap unit="entries">200</heap>
(6) <expiry>
<ttl unit="minutes">10</ttl>
</expiry>
</cache-template>
(7) <cache alias="bar" uses-template="myDefaults">
<key-type>java.lang.Number</key-type>
</cache>
(8) <cache alias="simpleCache" uses-template="myDefaults" />
</config>
(1) 캐시 이름
(2) foo 캐시의 key와 value의 타입이며 default는 java.lang.Object
(3) foo 캐시는 총 20개의 항목을 heap 영역에 저장
(4) off-heap은 heap 메모리 영역의 외부에 존재하는 영역으로 GC 대상이 되는 공간이 아닙니다. foo의 경우 10MB 사용하는 것으로 설정
(5) cache-template의 경우 cache 태그 내 선언할 정보들의 공통 설정
(6) 캐시 데이터 지속 시간 설정
(7) bar 캐시를 만들었으며 uses-templete을 활용하여 cache-template 설정을 사용하였고 key-type의 경우 cache-template의 key-type에 오버라이딩 가능
(8) simpleCache를 만들었으며 cache-template 설정 사용
작성한 ehcache.xml 파일을 Spring이 알 수 있도록 properties에 아래 문구 추가
spring.cache.jcache.config=classpath:ehcache.xml
이후 SpringBoot의 Main 클래스에 @EnableCaching 어노터이션을 붙여주면 EHCache를 사용하기 위한 설정은 끝이 납니다.
참고