ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AOP 용어
    SPRING 2021. 5. 25. 10:45

    개인 공부 후 정리 목적의 글 입니다.

     

     

     

     

    AOP 용어 정리

     

    조인포인트(Joinpoint)

    클라이언트가 호출하는 모든 비즈니스 메소드

     

    포인트컷(Pointcut)

    필터링된 조인포인트로 메소드가 포함된 클래스와 패키지는 물론이고 메소드 시그니처까지 정확하게 지정 가능

     

    포인트컷 표현식

    execution( * com.multicampus.biz. . *Impl. *(..). )

    execution( * com.multicampus.biz. . *Impl . get*(..)  )

     

    * : 리턴 타입

    com.multicampus.biz. : 패키지 경로

    *Impl : 클래스명

    *(..) / get*(..) : 메소드명 매개 변수

     

     

     

    어드바이스(Advice)

    횡단 관심에 해당하는 공통 기능의 코드를 의미하며, 독립된 클래스의 메소드로 작성된다. 

    어드바이스로 구현된 메소드가 언제 동작할지 스프링 설정 파일을 통해 지정할 수 있다.

     

    어드바이스의 동작 시점 5가지

    1. before - getBoardList 실행되기 전에 printLog() 메소드 실행

    2. after - getBoardList 실행된 이후 printLog() 메소드 실행

    3. after-returning

    4. after-returning

    5. around

     

     

    위빙(Weaving)

    포인트컷으로 지정한 핵심 관심 메소드가 호출될 때, 어드바이스에 해당하는 횡단 관심 메소드가 삽입되는 과정을 의미

    비즈니스 메소드를 수정하지 않고도 횡단 관심에 해당하는 기능을 추가하거나 변경할 수 있다.

     

    애스팩트(Aspect) 또는 어드바이저(Advisor)

    AOP의 핵심인 애스팩트는 포인트컷과 어드바이스의 결합으로, 어떤 포인트컷 메소드에 대해서 어떤 어드바이스 메소드를 실행할지 결정한다.

     

     

    AOP 엘리먼트

    <aop:config> = 루트 엘리먼트 

    스프링 내에서 여러 번 사용 가능하며 <aop:config> 엘리먼트 하위에는 <aop:pointcut>, <aop:aspect> 엘리먼트 잇음

     

    <aop:pointcut>  

    포인트컷을 지정하기 위해 사용

    스프링 내에서 여러 개를 정의할 수 있으며, 유일한 아이디를 할당하여 애스팩트를 설정할 때 포인트컷을 참조하는 용도로 사용한다.

     

    <aop:aspcet> 

    핵심 관심에 해당하는 포인트컷 메소드와 횡단 관심에 해당하는 어드바이스 메소드를 결합하기 위해 사용

     

    <aop:advisor>

    포인트컷과 어드바이스를 결합한다는 점에서 애스팩트와 같은 기능을 한다. 

    하지만 트랜잭션 설정 같은 몇몇 특수한 경우는 애스팩트가 아닌 어드바이저를 사용해야 한다.

     

     

     

    포인트컷 표현방식

     

    1. 리턴타입 지정

    표현식 설명
    * 모든 리턴타입 허용
    void 리턴타입이 void인 메소드 선택
    !void 리턴타입이 void가 아닌 메소드 선택

     

    2. 패키지 지정

    표현식 설명
    com.springbook.biz 정확하게 com.springbook.biz 패키지만 선택
    com.springbook.biz.. com.springbook.biz 패키지로 시작하는 모든 패키지 선택
    com.springbook..imp com.springbook 패키지로 시작하면서 마지막 패키지 이름이 impl로 끝나는 패키지 선택

     

    3. 클래스 지정

    표현식 설명
    BoardServiceImpl 정확하게 BoardServiceImpl 클래스만 선택
    *Impl 클래스 이름이 Impl로 끝나는 클래스만 선택
    BoardService+ 클래스 이름 뒤에 '+'가 붙으면 해당 크래스로부터 파생된 모든 자식 클래스 선택, 인터페이스 뒤에 '+'가 붙으면 해당 인터페이스를 구현한 모든 클래스 선택

     

    4. 메소드 지정

    표현식 설명
    *(..) 가장 기본 설정으로 모든 메소드 선택
    get*(..) 메소드 이름이 get으로 시작하는 모든 메소드 선택

     

    5. 매개변수 지정

    표현식 설명
    (..) 가장 기본 설정으로서 '..'은 매개변수의 개수와 타입에 제약이 없음을 의미
    (*) 반드시 1개의 매개변수를 가지는 메소드만 선택
    (com.springbook.user.UserVO) 매개변수로 UserVO를 가지는 메소드만 선택. 이때 클래스의 패키지 경로가 반드시 포함되어야 함
    (!com.springbook.user.UserVO) 매개변수로 UserVO를 가지지 않는 메소드만 선택
    (Integer, ..) 한 개 이상의 매개변수를 가지되, 첫 번째 매개변수의 타입이 Integer인 메소드만 선택
    (Integer, *) 반드시 두 개의 매개변수를 가지되, 첫 번째 매개변수의 타입이 Integer인 메소드만 선택

     

     

     

     

    'SPRING' 카테고리의 다른 글

    JoinPoint  (2) 2021.05.26
    어드바이스 동작 시점  (0) 2021.05.25
    어노테이션  (0) 2021.05.24
    의존성 주입  (2) 2021.05.21
    스프링 컨테이너  (0) 2021.05.21
Designed by Tistory.