AOP는 Aspect Oriented Programming의 약자로 우리말로는 관점 지향 프로그래밍이라고 한다.
여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로, 재사용성을 높여주는 프로그래밍 기법이라고 한다.
AOP의 주요 용어는 아래와 같다.
아래 내용은 초보 웹 개발자를 위한 Spring4 프로그래밍 입문 에서 발췌하였다.
용어 | 의미 |
Joinpoint | Advice를 적용 가능한 지점. 메서드 호출, 필드 값 변경 등이 Joinpoint에 해당한다. 스프링은 프록시를 이용해서 AOP를 구현하기 때문에 메서드 호출에 대한 Joinpoint만 지원한다. |
Pointcut | Joinpoint의 부분 집합으로서 실제로 Advice가 적용되는 Joinpoint를 나타낸다. 스프링에서는 정규 표현식이나 AspectJ의 문법을 이용하여 Pointcut을 정의할 수 있다. |
Advice | 언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의 한다. |
Weaving | Advice를 핵심 로직 코드에 적용하는 것. |
Aspect | 여러 객체에 공통으로 적용되는 기능 Aspect라고 한다. 트랜잭션이나 보안 등이 Aspect의 좋은 예이다. |
Advice의 종류는 아래와 같다.
용어 | 의미 |
Before Advice | 대상 객체의 메서드 호출 전에 공통 기능을 실행한다. |
After Returning Advice | 대상 객체의 메서드가 익셉션 없이 실행된 이후에 공통 기능을 실행한다. |
After Throwing Advice | 대상 객체의 메서드를 실행하는 도중 익셉션의 발생한 경우에 공통 기능을 실행한다. |
After Advice | 대상 객체의 메서드 실행 후 공통 기능을 실행한다. 익셉션 발생 여부와 상 관없이 실행한다. |
Around Advice | 대상 객체의 메서드 실행 전, 후 또는 익셉션 발생 시점에 공통 기능을 실행하는데 사용된다. |