번개멍
[Spring]Execution 본문
.Execution 명시자
*/
----------------------------------------
- 메소드 원형 : 접근제한자, 반환값, 메소드명( int kor, int eng, int mat), 매개변수(전달인자)
- 사용 목적 : Pointcut을 지정할 때 사용
- execution(접근제한자, 반환값(리턴타입), 클래스이름, 메소드명(매개변수(전달인자)) )
1) 접근 제한자 : public만 지원합니다.
2) 리턴타입 : 메소드의 매개변수 타입
3) 클래스 이름 : 패키지를 포함한 클래스 이름
4) 메소드 이름 : 메소드의 이름
5) 매개변수 : 매개변수의 형태
- ** : 하나의 모든 덧을 이미한다.
- .. : 개수에 상관없이 모든 것을 의미하다.
<!--context-aop 설정-->
<bean id='advisor1' class='kr.co.korea.advisor.AdvisorClass'/>
<aop:config>
<aop:aspect ref='advisor1'>
<!-- 반환타입은 void, kr.co.korea.beans.TestBean1 클래스, method1 메소드, 매개변수 없음.-->
<aop:pointcut id="point1" expression="execution(void kr.co.korea.beans.TestBean1.method1())"/>
<aop:before method="firstMethod1" pointcut-ref="point1"/>
<aop:pointcut id="point2" expression="execution(void kr.co.korea.beans.TestBean1.method2())"/>
<aop:before method="secondMethod2" pointcut-ref="point2"/>
<aop:pointcut id="point1" expression="execution(void kr.co.korea.beans.TestBean1.method1(int))"/>
<aop:pointcut id="point1" expression="execution(void kr.co.korea.beans.TestBean1.method1(String))"/>
<aop:pointcut id="sss1" expression="execution(void kr.co.korea.beans.TestBean1.method1(*))"/>
<aop:after method="Method3" pointcut-ref="sss1"/>
<aop:pointcut id="aaa1" expression="execution
(int kr.co.korea.beans2.TestSample1.add(int x, int y))"/>
<aop:after method="Method333" pointcut-ref="aaa1"/>
<!-- 반환타입은 void, kr.co.korea.beans 패키지, TestBean1 클래스, method1 메소드, 정수형 매개변수 2개 존재. -->
<aop:pointcut id="point1" expression=
"execution(void kr.co.korea.beans.TestBean1.method1(int, int))"/>
<aop:pointcut id="point1" expression=
"execution(void kr.co.korea.beans.TestBean1.method1(int, String))"/>
<aop:pointcut id="point1" expression=
"execution(void kr.co.korea.beans.TestBean1.method1(String, int))"/>
<aop:pointcut id="point1" expression=
"execution(void kr.co.korea.beans.TestBean1.method1(String, String))"/>
<!-- 반환타입은 void, kr.co.korea.beans 패키지, TestBean1 클래스, method1 메소드, 모든 타입의 매개변수 0개 이상. --> <aop:pointcut id="point1" expression=
"execution(void kr.co.korea.beans.TestBean1.method1(..))"/>
<!-- 반환타입은 void, kr.co.korea.beans 패키지, TestBean1 클래스, 모든 메소드, 모든 타입의 매개변수 0개 이상. -->
<aop:pointcut id="point1" expression=
"execution(void kr.co.korea.beans.TestBean1.*(..))"/>
<!-- 반환타입은 void, kr.co.korea.beans 패키지, 모든 클래스, 모든 메소드, 모든 타입의 매개변수 0개 이상. --> <aop:pointcut id="point1" expression=
"execution(void kr.co.korea.beans.*.*(..))"/>
<!-- 반환타입은 void, kr.co.korea.beans 패키지, 모든 클래스, method1 메소드, 모든 타입의 매개변수 0개 이상. -->
<aop:pointcut id="point1" expression=
"execution(void kr.co.korea.beans.*.method1(..))"/>
<!-- 반환타입은 void, kr.co.korea. 모든 패키지, 모든 클래스, 모든 메소드, 모든 타입의 매개변수 0개 이상. --> <aop:pointcut id="point1" expression=
"execution(void kr.co.korea.*.*.*(..))"/>
<!-- 반환타입은 void, kr.co.korea. 모든 패키지, TestBean1 클래스, 모든 메소드, 모든 타입의 매개변수 0개 이상. -->
<aop:pointcut id="point1" expression=
"execution(void kr.co.korea.*.TestBean1.*(..))"/>
<!-- 반환타입은 void, 모든 패키지, 모든 클래스, 모든 메소드, 모든 타입의 매개변수 0개 이상. -->
<aop:pointcut id="point1" expression= "execution(void *.*(..))"/>
<!-- 반환타입은 int, 모든 패키지, 모든 클래스, 모든 메소드, 모든 타입의 매개변수 0개 이상. -->
<aop:pointcut id="point1" expression= "execution(int *.*(..))"/>
<!-- 모든 반환타입, 모든 패키지, 모든 클래스, 모든 메소드, 모든 타입의 매개변수 0개 이상. -->
<aop:pointcut id="point1" expression= "execution(* *.*(..))"/>
<!-- 모든 패키지 -->
<aop:pointcut id="point1" expression= "execution(* *(..))"/>
<!-- 모든 패키지의 method1인 경우에 -->
<aop:pointcut id="point1" expression= "execution(* method1(..))"/>
<!-- AOP 적용시 다양한 상황에 대응 할 수 있는 명시자를 제공하고 있습니다. -->
<!-- <aop:around method="aroundMethod" pointcut-ref="point1"/>
<aop:after-returning method="afterReturningMethod" pointcut-ref="point1"/> -->
</aop:aspect>
</aop:config>
'코딩이야기 > Spring' 카테고리의 다른 글
[Spring]AOP Interceptor (0) | 2020.07.10 |
---|---|
[spring]AspectJ (0) | 2020.07.06 |
[Spring] 어노테이션 정리 (0) | 2020.07.01 |
[Spring] 자동주입 (0) | 2020.06.30 |
[Spring]스프링의 이해? (0) | 2020.06.25 |