캐시를 구현하기 위해 ehcache의 설정파일을 작성한다.
Spring3.1버전부터 Spring Application에 캐시를 쉽게 추가할 수 있도록 기능을 제공하게 되었다.
또한 Spring Boot에서는 spring-boot-starter-chache Artifact를 추가하여 CacheManager를 구성할 수 있다.
기본적으로 별도의 추가적인 서드파티 모듈이 없는 경우에는 Local Memory에 저장이 가능한 ConcurrentMap기반인 ConcurrentMapCacheManager가 Bean으로 자동생성 된다.
서드파티모듈인 EHCache, Redis등 서드파티 모듈을 추가하게 되면 EHCacheCacheManager, RedisCacheManager를 Bean으로 등록하여 사용할 수 있다.
이렇게 되면 별도로 다른 설정 없이도 단순 Memory Cache가 아닌 Cache Server를 대상으로 캐시를 저장 할 수 있도록 지원하고 있다.
cache 참고 : https://jaehun2841.github.io/2018/11/07/2018-10-03-spring-ehcache/
이제, 캐시 설정context파일을 작성한다.
1. Spring xsd 작성
<?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:cache="http://www.springframework.org/schema/cache"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">
schemaLocation에서 cache가 잡힌 부분을 참고해보자.
2. 캐시애노테이션 자동스캔설정
<cache:annotation-driven cache-manager="cacheManager" />
3. 캐시매니저 선언
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
<property name="cacheManager" ref="ehcache" />
</bean>
4. jmx설정
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" >
<property name="configLocation" value="classpath:/cache/ehcache.xml"></property>
<property name="shared" value="true"/>
</bean>
<bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
<property name="locateExistingServerIfPossible" value="true"/>
</bean>
<bean id="managementService" class="net.sf.ehcache.management.ManagementService" init-method="init">
<constructor-arg ref="ehcache"/>
<constructor-arg ref="mbeanServer"/>
<constructor-arg index="2" value="true"/>
<constructor-arg index="3" value="true"/>
<constructor-arg index="4" value="true"/>
<constructor-arg index="5" value="true"/>
</bean>
- jmx란 서버측, 여기에서는 하나 이상의 MBeans(Management Beans, 관리 빈즈) 으로 필요한 리소스들의 정보를 취합하여 에이전트로 전달하는 역할을 한다.
- API를 통해서 최소한의 노력으로 MBean의 처리 내용을 전달할 수 있도록 되어 있다.
- jmx는 나중에 별도로 공부하고싶다.
jmx를 이용하면 어플리케이션 리소스 현황을 시각적으로 볼 수 있고, 모니터링용으로 사용하며 레거시를 제거하는 발판으로도 삼을 수 있을것이란 생각이 들었다.
- 단, 사용하려면 mbean서버가 별도 있어야하는 것 같다.
- 스프링빈을 mbean으로 익스포트하여 사용한다.
- 우리가 만들 어플리케이션에서는 각각 ehcache, mbean을 만들어 managementService에 참조로 넘긴다.
- 초기화 메소드는 init이다.
jmx참고 : https://dev-k.tistory.com/4 / https://blog.outsider.ne.kr/1026
'쓸만한 JSP 홈페이지 만들기' 카테고리의 다른 글
Spring 설정xml - file-context.xml (0) | 2019.07.02 |
---|---|
ehcache연동 ehcache.xml (0) | 2019.07.01 |
공통클래스 - ObjectUtils (0) | 2019.06.21 |
공통클래스 - MariaUsTypeHandler (0) | 2019.06.21 |
mybatis연동 config.xml (1) | 2019.06.21 |