●AOP
- 관점지향프로그래밍
- 문제를 해결하기 위한 핵심 관심 사항과 전체에 적용되는 공통 관심 사항을 기준으로 프로그래밍 함으로써 공통 모듈을 여러 코드에 쉽게 적용
- 공통 관심 사항을 구현한 코드를 핵심 로직을 구현한 코드 안에 삽입하는 것을 말함
●AOP 용어(매우 중요 ★★★★★)
Advice |
언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의 |
JoinPoint |
Advice를 적용 가능한 지점을 의미, 메서드 호출, 필드 값 변경 등이 JoinPoint에 해당 |
PointCut |
JoinPoint의 부분 집합으로서 실제로 Advice가 적용되는 JoinPoint를 나타냄, 스프링에서는 정규 표현식이나 AspectJ의 문법을 이용하여 PointCut을 정의 |
Weaving |
Advice를 핵심 로직 코드에 적용하는 것 |
Aspect |
여러 객체에 공통으로 적용되는 공통 관심 사항을 Aspect라고 함. 트랜잭션이나 보안 등이 Aspect의 좋은 예임. |
●Weaving의 3가지 방식
▶ 컴파일 시에 Weaving
▶ 클래스 로딩 시에 Weaving
▶ 런타임 시에 Weaving
●스프링은 3가지 방식으로 AOP를 구현
▶ XML 스키마 기반의 POJO 클래스를 이용한 AOP 구현
▶ AspectJ 5/6에서 정의한 @Aspect 어노테이션 기반의 AOP 구현
▶ 스프링 API를 이용한 AOP 구현
●구현 가능한 Advice 종류
종 류 |
설 명 |
Before Advice | 대상 객체의 메서드 호출 전에 공통 기능을 실행 |
After Returning Advice | 대상 객체의 메소드가 예외 없이 실행한 이후에 공통 기능을 실행 |
After Throwing Advice |
대상 객체의 메소드를 실행하는 도중 예외가 발생한 경우에 공통 기능을 실행 |
After Advice | 대상 객체의 메서드를 실행하는 도중에 예외가 발생했는지의 여부와 상관없이 메서드 실행 후 공통 기능을 실행(try ~ catch ~ finally의 finally 블록과 비슷) |
Around Advice |
대상 객체의 메소드 실행 전, 후 또는 예외 발생 시점에 공통 기능을 실행 |
[참고자료] Spring 3.0 프로그래밍 - 최범균
'프로그램 > Spring 3.0' 카테고리의 다른 글
AOP - XML 스키마 기반 - Aspect 설정 (0) | 2012.05.01 |
---|---|
AOP - XML 스키마 기반 (0) | 2012.05.01 |
라이프 사이클, @Scope, @Qualifier - 작성중... (0) | 2012.04.30 |
@Configuration - @Import (0) | 2012.04.30 |
서로 다른 @Configuration 어노테이션 클래스 간의 의존 설정 (0) | 2012.04.26 |