note

Spring AOP 본문

JSP/Spring

Spring AOP

투한 2012. 3. 2. 11:11




AOP(Aspect Oriented Programming)
문제를 바라보는 관점으로 프로그래밍하는 기법 






공통 관심 사항(cross-cutting concern)
로깅과 같은 기본적인 기능에서부터 트랜잭션이나 보안과 같은 기능에 이르기까지
어플리케이션 전반에 걸쳐 적용되는 공통 기능이 존재한다
Struts2에 비유한다면 interceptor라고 볼수 있으며
interceptor의 확장 기능이라 생각하면 된다(액션의 전후처리)






공통 기능 코드를 전후로 모듈화해서 

밖으로 빼낸다고 보면됨 





AOP용어

Advice -
언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의하고 있다.

Jointpoint
Advice를 적용 가능한 지점을 의미한다
(메서드 호출, 필드값 변경)등

Pointcut
Jointpoint의 부분집합으로서 실제로 Advice가 적용되는 Joinpoint를 나타낸다

Weaving -
Advice를 핵심 로직 코드에 적용되는것을 weaving 이라고 한다

Aspect  -
여러 객체에 공통으로 적용되는 공통 관심 사항을 Aspect라고 한다




XML설정 대신 어노테이션 설정으로 할시에는 보기에 편하고 무슨 기능으로 동작하는지 알 수 있다
(XML 설정정보가 많아질 수록 알아 보기가 어려움)
그래서 현재 추세는 XML설정대신 어노테이션 방법으로 설정하는 추세임







구현 가능한 Advice 종류

Before Advice
대상 객체의 메서드 호출전에 공통 기능을 실행한다.

After Returning Advice
대상 객체의 메서드가 예외 없이 실행한 이후에 공통 기능을 실행한다.

After Throwing Advice
대상 객체의 메서드를 실행하는 도중 예외가 발생한 경우에 공통 기능을 실행한다

After Advice
대상 객체의 메서드를 실행하는 도중에 예외가 발생했는지의 여부와 상관없이 메서드 실행 후 공통 기능을 실행한다.
(try-catch-finally의 finally 블록과 비슷하다.)

Around Advice
대상 객체의 메서드 실행 전, 후 또는 예외 발생 시점에 공통 기능을 실행하는데 사용된다