EHCache 설정하기
설정 순서는 아래와 같다.
- Maven Dependency 설정
- Ehcache.xml 작성 (ehcache 설정파일)
- @EnableCaching 설정
Maven Dependency 설정
1 | <dependency> |
Ehcache.xml 작성 (ehcache 설정파일)
1 |
|
- defaultCache는 반드시 구현해야 할 캐시 (직접 생성하는 캐시에 대한 기본 설정)
- cache는 하나의 캐시를 사용할 때마다 구현
- name 속성은 캐시의 이름을 지정하며, 코드에서는 이 캐시의 이름을 사용하여 사용할 Cache 인스턴스를 구한다.
속성 | 설명 | Default |
---|---|---|
name | 코드에서 사용할 캐시 name | 필수 |
maxEntriesLocalHeap | 메모리에 생성 될 최대 캐시 갯수 | 0 |
maxEntriesLocalDisk | 디스크에 생성 될 최대 캐시 갯수 | 0 |
eternal | 영속성 캐시 설정 (지워지는 캐시인지?) external = “true”이면, timeToIdleSecond, timeToLiveSeconds 설정이 무시됨 |
false |
timeToIdleSecond | 해당 초동안 캐시가 호출 되지 않으면 삭제 | 0 |
timeToLiveSeconds | 해당 초가 지나면 캐시가 삭제 | 0 |
overflowToDisk | 오버플로우 된 항목에 대해 disk에 저장할 지 여부 | false |
diskPersistent | 캐시를 disk에 저장하여, 서버 로드 시 캐시를 말아 둘지 설정 | false |
diskExpiryThreadIntervalSeconds | Disk Expiry 스레드의 작업 수행 간격 설정 | 0 |
memoryStoreEvictionPolicy | 캐시의 객체 수가 maxEntriesLocalHeap에 도달하면, 객체를 추가하고 제거하는 정책 설정 LRU : 가장 오랫동안 호출 되지 않은 캐시를 삭제 LFU : 호출 빈도가 가장 적은 캐시를 삭제 FIFO : First In First Out, 캐시가 생성된 순서대로 가장 오래된 캐시를 삭제 |
LRU |
#@EnableCaching 설정
1 |
|
- @EnableCaching Annotation은
<cache:annotation-driven>
와 마찬가지로 어노테이션 기반 캐시를 사용 할 수 있는 설정 - 내부적으로 Spring AOP를 통해 @Cacheable, @CacheEvict와 같은 어노테이션을 Pointcut으로 이용해서 Cache기능을 구현하는 듯 하다.
- proxyTargetClass : class 기반 프록시를 생성함을 의미 (CGLIB라이브러리에 대한 의존성 필요)
- Mode : 어떤 Advisor 모듈을 선택할지에 대한 설정
- PROXY : Spring AOP Proxy방식을 이용
- ASPECTJ : LTW, CTW기능을 이용한 위빙