EHCache
2020. 5. 13. 14:30ㆍJava/일반
반응형
1. EHCache란
EHCache란 Java의 대표적인 캐시 엔진 중의 하나입니다.
특징
- 경량의 빠른 캐시 엔진
- 메모리, 디스크 저장 지원, 멀티 CPU의 동시 접근에 튜닝
- 동기, 비동기 복사, 피어 자동 발견
사용 이유
- Java 메소드에 캐싱을 적용함으로써 캐시에 보관된 정보로 메소드의 실행 횟수를 줄여줍니다.
- 대상 메소드가 실행될 때마다 추상화가 해당 메소드가 같은 인자로 이미 실행되었는지 확인하는 캐싱 동작을 적용합니다.
- 해당 데이터가 존재한다면 실제 메소드를 실행하지 않고 결과를 반환하고 존재한다면 메소드를 실행하고 그 결과를 캐싱한 후, 사용자에게 반환해서 다음 번 호출 시에 사용할 수 있게 합니다.
2. EHCache 사용 방법
Maven 의존성 추가
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>${ehcache.version}</version>
</dependency>
CacheManager를 빈으로 등록
<!-- cacheManager 설정 -->
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
<property name="cacheManager" ref="ehcache"/>
</bean> <!-- ehcache 설정 -->
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml"/>
</bean>
Encache.xml 작성
<?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">
<defaultCache eternal="false" maxElementsInMemory="50" overflowToDisk="false" diskPersistent="false"
timeToIdleSeconds="0" timeToLiveSeconds="3" memoryStoreEvictionPolicy="LRU"/>
<cache name="sampleCache" eternal="false" maxElementsInMemory="100" overflowToDisk="false"
diskPersistent="false" timeToIdleSeconds="0" timeToLiveSeconds="10" memoryStoreEvictionPolicy="LRU"/>
</ehcache>
엘리먼트와 속성
어노테이션
- @Cacheable: 캐시할 수 있는 메소드를 지정
- @CachePut: 메소드 실행에 영향을 주지 않고 캐시를 갱신
- @CacheEvict: 캐시에서 오래되거나 사용하지 않는 데이터를 제거하는 메소드를 지정, void 반환형에서만 사용 가능
- @Caching 어노테이션을 여러 개 사용할 때 사용
반응형
'Java > 일반' 카테고리의 다른 글
Java Module (0) | 2020.09.07 |
---|---|
ThreadLocal (0) | 2020.05.26 |
Filter, Interceptor, AOP의 차이 (0) | 2020.04.22 |
NDC와 MDC (0) | 2020.04.11 |
.map()과 .flatMap()의 차이 (0) | 2020.04.10 |