Christmas Pikachu aop 포인트컷 읽는법
카테고리 없음

aop 포인트컷 읽는법

ZI_CO 2024. 2. 29.
<aop:pointcut id="aPointcut" expression="execution(* com.spring.biz..*Impl.*(..))" />

 

1. 요소 설명:

<aop:pointcut>: pointcut을 정의하는 태그입니다.
id="aPointcut": pointcut에 "aPointcut"라는 ID를 부여합니다.

이 ID는 나중에 aspect에서 pointcut을 참조할 때 사용됩니다.
expression="execution(* com.spring.biz..*Impl.*(..))" : pointcut expression을 정의합니다. 이 expression은 어떤 메서드 실행에 이 pointcut이 적용될지를 결정합니다.

 

2. expression 분석:
execution : 이 키워드는 pointcut이 메서드 실행에 적용될 것을 의미합니다.
(*) : 이 와일드카드는 반환 유형에 관계없이 모든 메서드를 매칭합니다.
com.spring.biz.. : com.spring.biz  패키지 및 하위 패키지를 모두 나타냅니다.
*Impl.* : "Impl"로 끝나는 클래스의 모든 메서드를 매칭합니다.
(..) : 메서드의 인수 개수에 관계없이 모든 메서드를 매칭합니다.
3. 결론:
위 코드는 com.spring.biz  패키지 및 하위 패키지에 있는 "Impl"로 끝나는 클래스의 모든 메서드 실행에 "aPointcut" pointcut이 적용될 것을 정의합니다.

 

 

 

참고

<?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: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/context
      					http://www.springframework.org/schema/context/spring-context-4.2.xsd
     					http://www.springframework.org/schema/aop
     					http://www.springframework.org/schema/aop/spring-aop-4.2.xsd">
   
   <context:component-scan base-package="com.spring.biz" />

   <bean class="com.spring.biz.common.LogAdvice" id="logAdvice" />
   <bean class="com.spring.biz.common.LogAdvice2" id="logAdvice2" />
   
   <aop:config>
      <aop:pointcut id="aPointcut" expression="execution(* com.spring.biz..*Impl.*(..))" />
      <aop:pointcut id="bPointcut" expression="execution(* com.spring.biz..*Impl.select*(..))" />
      <aop:pointcut id="cPointcut" expression="execution(* com.spring.biz..MemberServiceImpl.select*(..))" />
      <aop:pointcut id="dPointcut" expression="execution(* com.spring.biz..BoardServiceImpl.select*(..))" />
      
      <aop:aspect ref="logAdvice">
         <aop:before pointcut-ref="aPointcut" method="printLog" />
      </aop:aspect>
      
      <aop:aspect ref="logAdvice2">
         <aop:before pointcut-ref="cPointcut" method="printLog" />
         <aop:before pointcut-ref="dPointcut" method="printLog" />
      </aop:aspect>
   </aop:config>

</beans>

댓글