ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링 AOP : 개념
    SPRING/스프링프레임워크 핵심개념 2021. 5. 29. 01:14

    AOP : Aspect-oriented Programming (AOP)은 OOP를 보완하는 수단으로, 흩어진 Aspect를 모듈활 할 수 있는 프로그래밍 기법

     

    흩어진 관심사 (Crosscutting Concerns)

     

    위 그림에서 같은 색깔의 영역들은 여러 클래스에서 공통적으로 사용하는 로직들이다.

    AOP는 주로 Logging이나 Transaction에 사용이 되는데 Logging할 때 AOP가 필요한 이유는 다음과 같다.

    메서드가 실행되는 시간을 재는 로그를 쌓고자 할때, class A,B,C 각각에 시간을 재는 코드를 추가해야 한다.

    이러한 경우에는 각각의 클래스에 있는 시간을 재는 로직을 수정해야 하기 때문에 유지보수가 어렵다.

    그렇기 때문에 AOP를 이용하여 해결한다. 

     

    Aspect X, Y, Z 각각 Concern 별로 Aspect를 만들고, Aspect를 사용할 클래스에 적용한다.

    위와 같이 공통 로직을 묶어서 모듈화하는 것을 AOP라고 한다.

     

    AOP의 주요 개념

    - Aspect와 Target

    - Advice

    - Join point와 Pointcut

     

    Aspect : Advice와 Pointcut을 포함.

    Advice : 공통 로직 (위 스크린샷의 노랑, 초록, 빨간색 부분)

    Pointcut :  Advice를 어디에 적용 할 지에 대한 정보. (A클래스의 a method에 Aspect X의 advice를 적용하겠다.)

    Target :  적용이 되는 대상 (클래스)

    Joint Point : AOP가 적용된 메서드가 실행되는 시점

    Weaving : Advice를 핵심 로직코드에 삽입하는 것을 위빙이라고 함.

     

    AOP 적용방법

     

    1. 컴파일

    2. 로드 타임

    3. 런타임

    -> SPRING AOP

     

     

     

     

     

Designed by Tistory.