- HOME
- [종료]구루비 Dev 스터디
- 2012년 하반기 - 자바기반의 웹 개발 멘토링 스터디
- Spring AOP의 이해
AOP의 이해
1. AOP란?
- 관점지향 프로그래밍(Aspect Oriented Programming, 이하 AOP)
- 자체적인 언어라기보다는 기존의 OOP언어를 보완하는 확장 형태로 사용되고 있다.
- 자바진영에서 사용되는 AOP도구 중 대표적인 것으로 AspectJ, JBossAOP, SpringAOP가 존재 한다.
2. AOP의 목적 및 장점
- "중복을 줄여서 적은 코드 수정으로 전체 변경을 할 수 있게하자"라는 목적에서 출발
- AOP의 필요성을 이해하는 가장 기초가 되는 개념은 '관심의 분리(Separation of Concerns)' 이다
- 핵심관점(업무로직) + 횡단관점(트랜잭션/로그/보안/인증 처리 등) 으로 관심의 분리를 실현
- 중복되는 코드 제거, 효율적인 유지보수, 높은 생산성, 재활용성 극대화, 변화 수용이 용이 등의 장점이 있다.
3. AOP 용어
3.1 Joinpoint
- 메소드를 호출하는 '시점', 예외가 발생하는 '시점'과 같이 애플리케이션을 실행할 때 특정 작업이 실행되는 '시점'을 의미한다.
3.2 Advice
- Joinpoint에서 실행되어야 하는 코드
- 횡단관점에 해당함 (트랜잭션/로그/보안/인증등..)
3.3 Target
- 실질적인 비지니스 로직을 구현하고 있는 코드
- 핵심관점에 해당함 (업무로직)
3.4 Pointcut
- Target 클래스와 Advice가 결합(Weaving)될 때 둘 사이의 결합규칙을 정의하는 것이다
- 예로 Advice가 실행된 Target의 특정 메소드등을 지정
3.5 Aspect
- Advice와 Pointcut을 합쳐서 하나의 Aspect라고 한다.
- 즉 일정한 패턴을 가지는 클래스에 Advice를 적용하도록 지원할 수 있는 것을 Aspect라고 한다.
3.6 Weaving
- AOP에서 Joinpoint들을 Advice로 감싸는 과정을 Weaving이라고 한다.
- Weaving 하는 작업을 도와주는 것이 AOP 툴이 하는 역할이다
4. Spring AOP의 특징
4.1 특징
- 스프링은 Aspect의 적용 대상(target)이 되는 객체에 대한 Proxy를 만들어 제공.
- 대상객체(Target)를 사용하는 코드는 대상객체(Target)를 Proxy를 통해서 간접적으로 접근.
- Proxy는 공통기능(Advice)을 실행한 뒤 대상객체(Target)의 실제 메서드를 호출하거나 또는 대상객체(Target)의 실제 메소드가 호출된 뒤 공통기능(Advice)을 실행
4.2 Proxy를 통한 AOP 구현
- HOME
- [종료]구루비 Dev 스터디
- 2012년 하반기 - 자바기반의 웹 개발 멘토링 스터디
- Spring AOP의 이해