본문 바로가기
Spring

Spring ehcache 설정

by 수앙 2016. 12. 12.

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

댓글