본문 바로가기

Java/Spring

스프링 AOP의 주요 용어



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

 대상 객체의 메서드 실행 전, 후 또는 익셉션 발생 시점에 공통 기능을 실행하는데 사용된다.