AOP의 용어 및 개념 정리

Woojin·2022년 12월 17일
0

AOP(관점지향 프로그래밍; Aspect-oriented Programming)에서 다루는 다양한 용어들을 정리하고자 한다.

ASPECT
먼저, 가장 핵심이 되는 애스펙트(Aspect)는 여러 객체에 공통적으로 적용되는 기능을 말한다. 어드바이스 + 포인트컷을 모듈화하여 애플리케이션에 포함하는 횡단 기능이다. 여러 어드바이스와 포인트컷이 함께 존재한다는 특징이 있다.

JOIN POINT
조인 포인트는 애플리케이션 실행흐름에서의 특정 포인트를 의미하는데, AOP를 적용할 수 있는 모든 지점에 해당된다. 예를 들어 클래스 초기화, 객체 인스턴스화, 메소드 호출, 필드 접근, 예외 발생 등이 있따. 횡단 관심은 조인포인트 전후에 AOP에 의해 자동으로 추가되는데, 애플리케이션에 새로운 동작을 추가하기 위해 조인포인트에 관심코드를 추가할 수 있다는 특징이 있다. spring AOP는 프록시 방식을 사용하기 떄문에 조인포인트는 항상 메소드 실행 지점으로 제한된다.

ADVICE
어드바이스는 조인 포인트에서 수행되는 코드인데 애스펙트를 언제 핵심코드에 적용할지를 정의한다. 그렇기 때문에 시스템 전체 애스펙트에 API 호출을 제공하고, 메소드를 호출하기 전에 각 상세 정보와 모든 메서드를 로그로 남기기 위해 메서드 시작 전의 포인트인 조인포인트를 선택하게 된다.

POINTCUT
조인 포인트 중에서 어드바이스가 적용될 위치를 선별하는 기능이다. Aspect J 표현식을 사용해서 지정하고, 프록시를 사용하는 스프링 AOP는 메서드 실행 지점만 포인트컷으로 선별이 가능하다.

WEAVING
위빙은 포인트컷으로 결정한 타겟의 조인 포인트에 어드바이스를 적용하는 것이다. 이게 무슨 말이냐면 애플리케이션의 실행 흐름의 특정 포인트(조인 포인트) 중에서 어드바이스가 적용될 위치를 선별하는 기능(포인트컷)으로 선정한 곳에 애스펙트(공통 기능)을 언제 핵심 코드에 적용할지 정의하는 코드(어드바이스)를 적용하는 것이다. 간단히 말하면 어드바이스를 핵심 코드에 적용하는 것을 의미한다. 위빙은 핵심 기능 코드에 영향을 주지 않고 부가 기능을 추가할 수 있다. AOP 적용을 위해서 애스펙트 객체에 연결한 상태이다.

AOP PROXY
AOP 기능을 구현하기 위해서 만든 프록시 객체인데, 스프링에서 AOP 프록시는 JDK 동적 프록시 또는 CGLIB 프록시이다.

TARGET
핵심 기능을 담고 있는 모듈로 타겟은 부가기능을 부여할 대상이 된다. 어드바이스를 받는 객체이고 포인트컷으로 결정된다.

ADVISOR
1개의 어드바이스 + 1개의 포인트컷으로 구성된다.(Spring AOP에서만 사용되는 용어)

profile
개발 공부하는 일상

0개의 댓글