반응형
스프링에는 데이터를
캐시로 보관할 수 있는 캐시 기능을 제공한다. 그 중 대표적으로 사용되는 Ehcache(ehcache-spring-annotation)에 대해 알아보자.
이를 사용하는 가장 대표적인 이유는 다음과 같다.
1. 꾸준하게 동일한 데이터
2. 조회하여 데이터를 가지고 오는데 비용이 많이 소모되는 경우
[설정방법]
pom.xml
1 2 3 4 5 6 | <!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache --> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.10.4</version> </dependency> | cs |
applicationContext.xml 수정
<import resource="applicationContext-cache.xml" />
applicationContext-cache.xml 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.1.xsd"> <ehcache:annotation-driven /> <ehcache:config cache-manager="cacheManager"> <ehcache:evict-expired-elements interval="300" /> </ehcache:config> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation" value="/WEB-INF/cache/ehcache.xml" /> </bean> </beans> | cs |
Ehcache 설정 파일 생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?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="32M" maxBytesLocalOffHeap="128M" maxBytesLocalDisk="0M" updateCheck="false"> <cache name="WedulCache" maxElementsInMemory="100" eternal="false" overflowToDisk="false" timeToLiveSeconds="30" /> </ehcache> | cs |
- maxElementsInMemory : 한번에 최대 몇개의 엘리먼트 보관 가능한지 여부
- overflowToDisk : 캐시를 디스크에 쓰기.
캐시가 필요한 부분에 캐시적용
1 2 3 4 5 6 7 8 9 | @Cacheable(value="findMemberCache", key="#name") public Student findByNameCache(String name) { return new Student(201014448, "cjung@gmail.com", name); } @CacheEvict(value = "findMemberCache", key="#name") public void refresh(String name) { logger.info(name + "의 Cache Clear!"); } | cs |
value는 encache.xml에 정의한 캐시 이름이고 key는 해당 캐시의 고유 키이다.
위의 구조는 name별로 캐시가 쌓이는 구조이다.
@CacheEvict는 캐시를 초기화하는 것이다.
※ 비고
ehcache.xml 설정 값.
http://www.ehcache.org/ehcache.xml
반응형
'web > Spring' 카테고리의 다른 글
Spring Context 종류 및 특성 (0) | 2018.05.27 |
---|---|
Spring Rest Client Feign 소개 (1) | 2018.05.27 |
/과 /*의 차이점을 포함한 url-mapping 정리 (0) | 2018.05.27 |
Spring 비동기 프로세스 Callable, DeferredResult, SseEmitter (0) | 2018.05.27 |
Mabatis #, $ 차이점 (0) | 2018.05.27 |