카테고리 없음
2.5 AOP applicationContext.xml 설정 (no annotation)
Lawmin
2011. 7. 28. 11:21
1. dao, service 등 업무 bean 작성
<bean id="boardDaoTarget" class="board.dao.BoardDao">
<bean id="boardDaoTarget" class="board.dao.BoardDao">
<property name="smc" ref="sqlMapClientTemplate"/>
</bean>
<bean id="boardService" class="board.service.BoardService">
<property name="boardDao" ref="boardDao"/>
</bean>
2. aop 부분 (명시적인 프록시 생성)
<bean id="LogAdvice" class="board.aop.LogAdvice"/>
<bean id="LogAdvice" class="board.aop.LogAdvice"/>
<bean id="LogAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice" ref="LogAdvice"/>
<property name="patterns">
<list>
<value>.*</value>
</list>
</property>
</bean>
<bean id="boardDao" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="boardDaoTarget"/>
<property name="interceptorNames">
<list>
<value>LogAdvice</value>
<value>LogAdvisor</value>
</list>
</property>
</bean>
처리 방식은... boardDao bean 을 요청하면 advice 또는 advisor(패턴 일치하는 메서드만)를 target으로 지정한 boardDaoTarget 에 적용하여 proxy 로 만들어내어 실행하게 된다.
아래와 같이 하면, 자동으로 Proxy 생성되도록 설정이 가능하다. (pros and cons?)
3. aop 부분 (자동 프록시 생성)
<aop:config proxy-target-class="true">
처리 방식은... boardDao bean 을 요청하면 advice 또는 advisor(패턴 일치하는 메서드만)를 target으로 지정한 boardDaoTarget 에 적용하여 proxy 로 만들어내어 실행하게 된다.
아래와 같이 하면, 자동으로 Proxy 생성되도록 설정이 가능하다. (pros and cons?)
3. aop 부분 (자동 프록시 생성)
<aop:config proxy-target-class="true">
<aop:aspect id="logAspect" ref="logging">
<aop:around method="showMethodCallInfo" pointcut="execution(* board.dao.BoardDao.*(..))"/>
</aop:aspect>
</aop:config>
위와 같이 해주면, advice 및 advior 를 지정할 필요없이, 자동으로 proxy를 생성해준다.
물론 proxy 생성을 위해 bean id 를 바꿔줄 필요도 없다. (명시적으로 프록시 생성하던 방법에서는 BoardDao -> BoardDaoTarget 로 변경하고 BoardDao 이름으로 ProxyFactoryBean 를 생성하고 target을 BoardDaoTarget 을 지정했었음)
위와 같이 해주면, advice 및 advior 를 지정할 필요없이, 자동으로 proxy를 생성해준다.
물론 proxy 생성을 위해 bean id 를 바꿔줄 필요도 없다. (명시적으로 프록시 생성하던 방법에서는 BoardDao -> BoardDaoTarget 로 변경하고 BoardDao 이름으로 ProxyFactoryBean 를 생성하고 target을 BoardDaoTarget 을 지정했었음)