- AOP ( 관점 지향 프로그래밍) -
하나의 프로그램 내의 다양한 모듈(메소드)에서 공통적으로 실행되는 기능과 특정 모듈에서만 실행되는 기능(핵심 기능)을 분리시켜서 사용하는것.
한 모듈에 핵심 기능 이외의 기능이 응집되지 않도록 하기 위한 기술.
AOP 용어는 다음과 같다.
aspect - 공통 기능
advice - aspect 자체를 말한다.
joinpoint - advice를 적용해야 하는 멤버 변수나 메소드 => 스프링은 메소드에 적용하는 기능만 지원한다.
pointcut - advice가 실제로 실행되는 부분
SPRING에서 태그나 어노테이션으로 사용되는 AOP 관련 용어들은 다음과 같다.
before - 핵심 기능이 실행되기 전에 advice를 실행한다.
after-returning - 핵심 기능이 정상적으로 종료된 후 advice를 실행한다.
after-throwing - 핵심 기능을 실행하는 도중에 exception이 발생되면 advice를 실행한다.
after - 핵심 기능이 정상적으로 실행되거나 exception이 발생되는 경우를 구분하지 않고 advice를 실행한다.
around - 핵심 기능이 실행되기 전과 실행되고 난 후 exception 발생 여부와 관계없이 advice를 실행한다.
=> 실행 전의 데이터가 실행 후로 넘어간다.
SPRING 에서 AOP를 사용하기 위해 AOP 라이브러리를 설치해야 한다.
여기선 AOP 라이브러리들중 aspectj를 다루고 내용은 아래와 같다.
pom.xml 파일의 <dependencies> ~ </dependencies> 사이에 아래의 내용을 추가한다.
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.0</version>
<scope>runtime</scope>
</dependency>