https://www.youtube.com/watch?v=X4vsFpPg1z4&list=PL9mhQYIlKEhfYqQ-UkO2pe2suSx9IoFT2&index=13
학습 목표
- AOP의 개요와 용어에 대해 이해할 수 있습니다.
- Spring AOP의 특징 및 구현방식에 대해 이해할 수 있습니다.
- AspectJ와 Spring AOP 설치에 대해 이해할 수 있습니다.
- AOP(Aspect Oriented Programming)의 개요
AOP는 애플리케이션에서의 관심사의 분리(기능의 분리) 즉, 핵심적인 기능에서 부가적인 기능을 분리한다.
분리한 부가기능을 애스펙트(Aspect)라는 독특한 모듈형태로 만들어서 설계하고 개발하는 방법
OOP를 적용하여도 핵심기능에서 부가기능을 쉽게 분리된 모듈로 작성하기 어려운 문제점을 AOP가 해결해 준다고 볼 수 있다.
AOP는 부가기능을 애스펙트(Aspect)로 정의하여, 핵심기능에서 부가기능을 분리함으로써 핵심기능을 설계하고 구현할 때 객체지향적인 가치를 지킬 수 있도록 도와주는 개념이다.
AOP 용어
타겟(Target) : 핵심기능을 담고 있는 모듈로, 타겟은 부가기능을 부여할 대상이 된다.
어드바이스(Advice) : 어드바이스는 타겟에 제공할 부가기능을 담고 있는 모듈이다.
조인 포인트(Join Point)
: 어드바이스가 적용될 수 있는 위치를 말한다.
: 즉, 타겟 객체가 구현한 인터페이스의 모든 메서드는 조인 포인트가 된다.
포인트 컷(Pointcut)
: 어드바이스를 적용할 타겟의 메서드를 선별하는 정규표현식
: 포인트컷 표현식은 excution으로 시작하고, 메서드의 Signature를 비교하는 방법을 주로 이용한다.
애스펙트(Aspect)
: 애스펙트는 AOP의 기본 모듈이다.
: 애스펙트 = 어드바이스 + 포인트컷
: 애스펙트는 싱글톤 형태의 객체로 존재한다.
어드바이저(Advisor)
: 어드바이저 = 어드바이스 + 포인트컷
: 어드바이저는 Spring AOP에서만 사용되는 특별한 용어이다.
위빙(Weaving)
: 위빙은 포인트컷에 의해서 결정된 타겟의 조인 포인트에 부가기능(어드바이스)을 삽입하는 과정을 뜻한다.
: 위빙은 AOP가 핵심기능(타겟)의 코드에 영향을 주지 않으면서 필요한 부가기능(어드바이스)을 추가할 수 있도록 해주는 핵심적인 처리과정이다.
2. AOP의 특징 및 구현방식
Spring AOP의 특징
(1) Spring은 프록시(Proxy) 기반 AOP를 지원한다.
Spring은 타겟 객체에 대한 프록시를 만들어 제공한다.
타겟을 감싸는 포록시는 실행시간에 생성된다.
프록시는 어드바이스를 타겟 객체에 적용하면서 생성되는 객체이다.
구현방식은 위 2가지로 나누어짐.
댓글