nickjoIT
AOP 본문
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에만 있는 것인데,
관점 지향에서 '관점'을 나타내는 개념이라고 할 수 있다.
'FRAMEWORK > SPRING' 카테고리의 다른 글
@Controller VS, @RestController, ResponseEntity (0) | 2018.02.05 |
---|---|
MVC1, MVC2 패턴의 차이점과 Spring MVC 구조 (3) | 2016.02.12 |
Spring interceptore, Spring filter 차이점 (0) | 2016.02.12 |