AOP란?

spring_logo

AOP(Aspect Oriented Programming)란?

AOP는 관점지향 프로제그래밍인데, 로직의 어떠한 관점을 각각 나누어 모듈화하는 프로그래밍 방식이다.
프로그래밍을 할 때, 반복이 되는 코드들을 볼 수 있는데, Crosscutting Concerns라고 부른다. 즉, AOP는 이러한 반복되는 코드를 관점(Aspect)별로 비즈니스 로직에서 분리해 재사용할 수 있도록 만드는 것이다.
객체지향 프로그래밍(OOP)에서 부가기능을 쉽게 모듈화 할 수 있다.


AOP 용어

  • 타겟(Target)
    -핵심기능을 담고 있는 모듈. 타겟 기능을 부여할 대상.

  • 어드바이스(Advice)
    -타겟에 제공할 부가기능 담고 있는 모듈

  • 조인포인트(Join Point)
    -어드바이스가 적용될 수 있는 위치.
    -타겟의 인터페이스, 모든 메서드(생성자, getter 등)는 조인 포인트가 된다.
    -스프링에서는 메소드만 해당한다.
  • 포인트 컷(Point cut)
    -어드바이스를 적용할 타겟의 메서드를 선별하는 정규표현식.
    -쉽게 말해 조인포인트의 부분으로 실제 어드바이스가 적용된 부분임.
  • 위빙(Weaving) -포인트컷에 의해 결정된 타겟의 조인포인트에 어드바이스를 삽입하는 과정임.
    -어드바이스를 핵심기능에 적용하는 행위.

Spring에서의 AOP

Spring에서는 proxy 기반 AOP를 지원한다. proxy가 호출을 가로채서 어드바이스의 부가기능을 실행하거나(전처리 어드바이스), 타겟의 핵심기능 수행 후, 부가기능을 수행할 수도 있다.(후처리 어드바이스)
Spring에서는 Bean 조인포인트를 지원한다.
참고 : https://shlee0882.tistory.com/206

댓글남기기