<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>
댓글