본문 바로가기
dev/spring

Ehcache Annotations for Spring

by igooo 2010. 8. 5.
728x90

Spring 3.0으로 개발하면서 캐쉬를 적용 할 일이있어서 몇가지 방법을 찾던중 쉽게 적용 가능한 방법이 있어서 소개합니다.

ehcache-spring-annotations

간단한 소개를 하면 ehcache를 사용하여 캐쉬를 하고, 메서드에 어노테이션으로 추가하여 캐쉬를 설정할 수 있다.


적용방법
일단 라이브러리를 추가

<dependency>

  <groupId>com.googlecode.ehcache-spring-annotations</groupId>

  <artifactId>ehcache-spring-annotations</artifactId>

  <version>1.1.2</version>

</dependency>

Spring Bean 설정(볼드 처리한 부분 추가)

<?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:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring"
    xsi:schemaLocation="
        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">

    <!-- Scans within the base package of the application for @Components to configure as beans -->
    <context:component-scan base-package="org.igooo.blog" />

    <!-- ehcache -->
    <ehcache:annotation-driven cache-manager="ehCacheManager" />

    <bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" />
</beans>

ehcache 설정(ehcache.xml) 

ehcache 설정 방법

<?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="1000"
        overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"
        timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU"/>

    <cache name="accountCache" eternal="false"
        maxElementsInMemory="100" overflowToDisk="false" diskPersistent="false"
        timeToIdleSeconds="0" timeToLiveSeconds="300"
        memoryStoreEvictionPolicy="LRU" />
</ehcache>

끝.... ehcache,xml을 지정하는 부분이 없는데 클래스 패스에 있으면 알아서 읽어 가나보다...

사용법은 간단하게 메소드 위에 @Caheable 어노테이션만 추가하면 끝난다.

@Service
public class AccountServiceImpl implements AccountService {
    ..........

    @Cacheable(cacheName = "accountCache")
    @Transactional(readOnly = true)
    @Override
    public List<Account> selectAll() {
        return accountDao.selectAll();
    }

    ........
}

DAO가 Hibernate로 구현되어있는데 알아서 캐쉬된다.. iBatis도 테스트 해봤는데 문제 없었음...
추가 기능에 대해서는 문서를 더 찾아봐야겠지만..



 

'dev > spring' 카테고리의 다른 글

Spring - Modulith  (0) 2024.06.03
Spring Framework - Runtime efficiency with String (today and tomorrow)  (0) 2024.06.02
HiddenHttpMethodFilter  (0) 2010.06.24
Maven Build Script (spring + hibernate)  (0) 2009.12.07
Don't repeat the DAO!(Hibernate)  (0) 2008.11.27