쓸만한 JSP 홈페이지 만들기

Spring 설정xml - ehcache-context.xml

엉으니 2019. 6. 24. 20:11

캐시를 구현하기 위해 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