[Spring 프 리 로드] InitialingBean 인터페이스

많은 경우 에 우리 프로그램 이 조회 해 야 할 데이터 의 양 이 너무 많 습 니 다. 아무리 SQL 을 최적화 하 더 라 도 조회 시간 은 몇 초 에 달 할 수 있 습 니 다. 이 럴 때 사용자 에 대한 체험 이 매우 좋 지 않 습 니 다. 이 럴 때 우 리 는 미리 불 러 오 는 방법 으로 웹 용기 가 시 작 될 때 해당 하 는 데이터 조회 방법 을 불 러 와 서 얻 은 데 이 터 를 캐 시 에 넣 을 수 있 습 니 다.이렇게 하면 사용자 가 데 이 터 를 요청 할 때 우 리 는 캐 시 에 있 는 데 이 터 를 사용자 에 게 되 돌려 주 고 사용자 체험 을 향상 시 킬 수 있다.
InitializingBean 인 터 페 이 스 를 실현 하 는 것 은 Spring 예비 로드 를 실현 하 는 수단 으로 절 차 를 실현 하 는 것 입 니 다.
  • bean 을 만 듭 니 다.
  • 초기 화 방법 추가:
    public class DemoCache implements InitializingBean {
    
    	public void afterPropertiesSet() throws Exception {
    		// TODO Auto-generated method stub
    		
    	}
    
    }
    
    
  • bean 을 용기 에 주입 합 니 다. InitializingBean 인 터 페 이 스 는 bean 을 기반 으로 이 루어 지기 때문에 우리 가 작성 한 bean 은 Spring 용기 에 주입 해 야 합 니 다. 그러면 우리 가 다시 쓴 after PropertiesSet 방법 은 Spring 용기 에 의 해 스 캔 되 고 실 행 됩 니 다.
    public class DemoCache implements InitializingBean {
    
    	public void afterPropertiesSet() throws Exception {
    		// TODO Auto-generated method stub
    		//              
    	}
    
    }
    
    그러면 우리 의 초기 화 방법 이 실 행 됩 니 다. 그러나 이것 은 한 번 만 실 행 됩 니 다.다음 사용자 가 요청 할 때 도 검색 방법 을 실행 해 야 합 니 다. 그러면 우리 의 검색 은 아무런 의미 가 없 는 것 같 습 니 다. 그래서 우 리 는 우리 가 얻 은 결 과 를 캐 시 에 저장 해 야 합 니 다. 사용자 가 다음 에 요청 할 때 캐 시 에 있 는 데 이 터 를 직접 방문 하여 사용자 체험 을 향상 시 킬 수 있 습 니 다.
  • 방법 1: after PropertiesSet 방법 에서 얻 은 결 과 를 캐 시 에 직접 저장 합 니 다. 여 기 는 아이디어 만 제공 하고 불필요 한 코드 를 사용 하지 않 습 니 다.
  • 방법 2: 우리 가 초기 화 할 클래스 가 너무 많 을 때 모든 after PropertiesSet 방법 은 캐 시 에 저 장 된 문 구 를 한 번 써 야 합 니 다. 이 럴 때 우 리 는 AOP 의 사후 알림 으로 처리 할 수 있 습 니 다.Spring AOP 응용 인 스 턴 스
  • 방법 3: xml 설정 차단, 실제 원 리 는 op 과 같 습 니 다.
    <?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:p="http://www.springframework.org/schema/p"
    	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xsi:schemaLocation="
    	       http://www.springframework.org/schema/beans 
               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
               http://www.springframework.org/schema/tx 
               http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-3.0.xsd
               http://www.springframework.org/schema/aop 
               http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">  
               
    	<bean id="demoCache" class="com.gaotime.info.product.web.cache.DemoCache"/> 
    </beans>
    
    주: 여기 사용 하 는 ehcache.
    <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
    		p:configLocation="classpath:/cache/ehcache.xml" />
    	<!-- cacheManager   ,  ehcache.xml    -->	
    	<bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
    		p:configLocation="classpath:/cache/ehcache.xml" />	
    		
    	<!--   cacheManager -->
    	<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" 
    		p:cacheManager-ref="cacheManagerFactory" />		
    		
    	<bean id="lowFreCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
    	    <property name="cacheManager" ref="cacheManagerFactory" />
    	    <property name="cacheName" value="lowFreCache" />
    	</bean>
    	<bean id="lowFreMethodCacheInterceptor" class="com.gaotime.info.product.web.util.MethodCacheInterceptor">
    	    <property name="cache" ref="lowFreCache"/>
    	</bean>
    	<bean id="lowFreMethodCachePointCut"	class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
    		<property name="advice" ref="lowFreMethodCacheInterceptor" />
    		<property name="patterns">
    			<list>
    				 <value>com.lr.service.impl.DemoServiceImpl\.getCount</value>		<!--       -->	  
    			</list>
    		</property>
    	</bean>
    
  • 좋은 웹페이지 즐겨찾기