Framework/Spring

AOP (Aspect Oriented Programming) 용어

라롸 2020. 4. 5. 15:14

1. AOP(Aspect Oriented Programming)

  Aspect Oriented Programming을 우리말로 '관점 지향 프로그래밍' 정도로 많이 번역하고 있으나, 여기서 Aspect는 구분되는 기능이나 요소를 의미하기 때문에 '관점'보다는 '기능' 혹은 '관심'이라는 표현이 더 알맞다.

 

  AOP는 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 프로그래밍 기법이다. 핵심 기능과 공통 기능의 구현을 분리함으로써 핵심 기능을 구현한 코드의 수정 없이 공통 기능을 적용할 수 있게 만들어준다. 

 

 

https://shlee0882.tistory.com/206

업무 로직을 포함하는 기능을 핵심 기능

핵심 기능을 도와주는 부가적인 기능(로깅, 보안)을 부가기능, 공통기능

 

 

 

2. 주요 용어

 

타겟(Target) 핵심 기능을 담고 있는 모듈로 타겟은 부가기능을 부여할 대상이 된다.
어드바이스(Advice) 어드바이스는 타겟에 제공할 부가기능을 담고 있는 모듈이다.
조인포인트(Join Point) 어드바이스가 적용될 수 있는 위치를 말한다.
타겟 객체가 구현한 인터페이스의 모든 메서드는 조인 포인트가 된다.
포인트 컷(Pointcut) 어드바이스를 적용할 타겟의 메서드를 선별하는 정규표현식이다.
포인트컷 표현식은 execution으로 시작하고 메서드의 Signature를 비교하는 방법을 주로 이용한다.
애스펙트(Aspect) 애스펙트는 AOP의 기본 모듈이다.
애스펙트 = 어드바이스 + 포인트컷
애스펙트는 싱글톤 형태의 객체로 존재한다.
어드바이저(Advisor) 어드바이저 = 어드바이스 + 포인트컷
어드바이저는 Spring AOP에서만 사용되는 특별한 용어이다.
위빙(Weaving) 위빙은 포인트컷에 의해서 결정된 타겟의 조인 포인트에 부가기능(어드바이스)를 삽입하는 과정을 뜻한다.
위빙은 AOP가 핵심기능(타겟)의 코드에 영향을 주지 않으면서 필요한 부가기능(어드바이스)를 추가할 수 있도록 해주는 핵심적인 처리과정이다.

 

 

3. AOP 구현 방식

 

3-1. XML기반의 POJO 클래스를 이용한 AOP 구현

  • 부가기능을 제공하는 Advice 클래스를 작성한다.

  • XML 설정 파일에 <aop:config>를 이용해서 애스펙트를 설정한다.

    (즉, 어드바이스와 포인트컷을 설정함)

 

3-2. @Aspect 어노테이션을 이용한 AOP 구현

  • @Aspect 어노테이션을 이용해서 부가기능을 제공하는 Aspect 클래스를 작성한다.

  • 이 때 Aspect 클래스는 어드바이스를 구현하는 메서드와 포인트컷을 포함한다.

  • XML 설정 파일에 <aop:aspectj-autoproxy />를 설정한다.

 


참고 

1.  https://shlee0882.tistory.com/206

2.  책 - 초보 웹 개발자를 위한 스프링5 프로그래밍 입문