nickjoIT

AOP 본문

FRAMEWORK/SPRING

AOP

nickjo 2016. 2. 6. 19:17

1. 정의

- 기능을 핵심 비지니스 로직과 공통 모듈로 구분하고, 핵심 로직에 영향을 미치지 않고 사이사이에 공통 모듈을 효과적으로 잘 끼워 넣도록 하는 개발 방법

- 공통 모듈(보안 인증, 로깅 같은 요소등)을 만든 후에 코드 밖에서 이 모듈을 비지니스 로직에 삽입하는 것이 바로 AOP적인 개발이다

- 코드 밖에서 설정된다는 것이 핵심


사용자 삽입 이미지


2. AOP가 사용되는 경우

- 간단한 메소드 성능 검사

- 트랜잭션 처리

- 예외반환

- 아키텍처 검증


3. 용어

1) Weaving: 분리한 관심사를 다시 모듈에 삽입하는것

2) Advice: 관점으로 분리되고 실행시 모듈에 위빙된 구체적인 처리

- Around Advice: Joinpoint 앞과 뒤에서 실행되는 Advice

- Before Advice: Joinpoint 앞에서 실행되는 Advice

- After Returning Advice: Joinpoint 메서드 호출이 정상적으로 종료된 뒤에 실행되는 Advice

- After Throwing Advice: 예외가 던져질 때 실행되는 Advice

- Introduction: 클래스에 인터페이스와 구현을 추가하는 특수한 Advice

3) Joinpoint: 실행시에 처리 플로우에서 Advice를 위빙하는 포인트를 Joinpoint라고 한다. 구체적으로는 

'메서드 호출'이나 '예외 발생'이라는 포인트를 Joinpoint로 정의한다.

4) Pointcut: 하나 또는 복수의 Joinpoint를 하나로 묶는것. Advice의 위빙 정의는 Pointcut을 대상으로 설정한다.

하나의 Pointcut에는 복수의 Advice를 연결할 수 있다. 반대로 하나의 Advice를 복수 Pointcut에 연결하는 것도 가능하다.

5) Advisor: Advice와 Pointcut을 하나로 묶어 다루는 것을 Advisor라고 한다. Advisor는 스프링 AOP에만 있는 것인데,

관점 지향에서 '관점'을 나타내는 개념이라고 할 수 있다.

Comments