Spring 4.3.3, Ehcache 2.10.3 버전 기준으로 자바 기반한 설정
Ehcache와 관련된 스프링 설정부분만 다룬다.
글 쓰는 시점에서는 Ehcache 3.1.3 버전이 나옴.
메이븐 pom.xml
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.3</version>
</dependency>
스프링 설정
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.cache.ehcache.EhCacheManagerFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public EhCacheManagerFactoryBean ehCache() {
EhCacheManagerFactoryBean factoryBean = new EhCacheManagerFactoryBean();
factoryBean.setConfigLocation(new ClassPathResource("ehcache/ehcache.xml"));
factoryBean.setCacheManagerName("commonCache");
factoryBean.setShared(true);
return factoryBean;
}
@Bean
public CacheManager cacheManager(EhCacheManagerFactoryBean ehCache) {
return new EhCacheCacheManager(ehCache.getObject());
}
}
src/main/resources/ehcache/ehcache.xml 파일 생성
아래 설정은 ehcache.xml sample 중 하나임.
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="true"
monitoring="autodetect"
dynamicConfig="true">
<diskStore path="java.io.tmpdir" />
<cache name="commons"
maxEntriesLocalHeap="10000"
maxEntriesLocalDisk="1000"
eternal="false"
diskSpoolBufferSizeMB="20"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off">
<persistence strategy="localTempSwap" />
</cache>
</ehcache>
스프링 서비스
@Cacheable("commons")
public List<T> list() {
return T;
}
여기까지가 기본적인 캐시를 적용한 예제이다.
스프링 애노테이션 기반 설정
<참고: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html>
애노테이션 |
설명 |
@Cacheable |
triggers cache population 캐시 추가 |
@CacheEvict |
triggers cache eviction 캐시 제거 |
@CachePut |
updates the cache without interfering with the method execution 메소드 실행을 방해하지 않고 캐시 수정 |
@Caching |
regroups multiple cache operations to be applied on a method 메소드에 적용된 여러 캐시 작업들을 재편성 |
@CacheConfig |
shares some common cache-related settings at class-level 클래스 수준에서 일반적인 캐시 관련 설정 공유 |
이외 캐시 설정에
key 또는 keyGenerator, cacheManager, cacheResolver, sync, condition, unless, SpEL, Custom annotation 등
여러 가지가 있는데 너무 많아서 다음에 알아보자.
끝.
'Spring' 카테고리의 다른 글
Spring 4 JSR-303 Validator (0) | 2017.06.12 |
---|---|
Spring REST Docs 사용법 (0) | 2017.04.23 |
Spring 4 자바 기반 Thymeleaf 설정 (0) | 2016.10.16 |
Spring 4.3.2 log4jdbc-log4j2 설정 방법 (1) | 2016.09.29 |
Springfox 설정 (0) | 2016.09.25 |
댓글