[Spring] AOP 엘리먼트

U-Vin Lee·2022년 1월 5일
0

Study-Spring

목록 보기
3/3
post-thumbnail

<AOP 엘리먼트>

스프링은 AOP 관련 설정을 어노테이션 방식과 XML 방식으로 지원한다.
<aop:config> : 루트엘리먼트
<aop:pointcut>, <aop:aspect> : 하위 엘리먼트
<aop:config>와 하위 엘리먼트들의 포함관계는 아래 그림과 같다.

  • <aop:pointcut>
    <aop:pointcut>엘리먼트는 포인트컷을 지정하기 위해 사용한다.
    <aop:config>나 <aop:aspect>의 자식 엘리먼트로 사용할 수 있음.
    <aop:aspect> 하위에 설정딘 포인트컷은 해당 <aop:aspect>에서만 사용.
    <aop:pointcut>은 여러 개를 정의할 수 있으며, 유일한 아이디를 할당하여 애스팩트를 설정할 때, 포인트컷을 참조하는 용도로 사용.

allPointcut이라는 포인트컷은 com.mirim.biz 패키지로 시작하는 클래스 중에서 이름이 Impl로 끝나는 클래스의 모든 메소드를 포인트 컷으로 설정.
그리고 애스팩트 설정에서 <aop:before>엘리먼트의 pointcut-ref 속성으로 포인트컷을 참조.


  • <aop:aspect>
    애스팩트는 <aop:aspect> 엘리먼트로 설정, 핵심 관심에 해당하는 포인트컷 메소드에 횡단 관심에 해당하는 어드바이스 메소드를 결합하기 위해 사용
    애스팩트를 어떻게 설정하느냐에 따라 위빙 결과가 달라지므로 AOP에서 가장 중요한 설정.

④allPointcut으로 설정한 포인트컷 메소드가 호출 될 때(①)
log라는 어드바이스 객체(②)의 printLog메소드가 실행되고(③)이때
printLog(④)메소드 동작 시점이 <aop:before>라는 설정


  • 포인트컷 표현식
    포인트컷을 이용하면 어드바이스 메소드가 적용될 비즈니스 메소드를 정확하게 필터링을 할 수 있다.
    포인트컷 표현식은 execution 명시자를 이용하며, 명시자 안에 포인트컷 표현식을 기술한다.

  • ① 리턴타입 지정
    리턴타입 지정에서 가장 기본적인 방법은 *를 이용하는 것

  • ② 패키지 경로
    패키지 경로를 지정할 때는 *, .. 를 이용

  • ③ 클래스 지정
    클래스 이름을 지정할 때는 *, + 를 이용한다.

  • ④ 메소드 지정
    메소드를 지정할 때는 주로 *를 사용하고 매개변수를 지정할 때는 ..을 사용

  • ⑤ 매개변수 지정
    매개변수를 지정할 때는 ..나 * 를 사용하거나 정확한 타입을 지정한다.

profile
포기하지 않고 끝까지 노력하는, 초보 개발자입니다.

0개의 댓글