정의
특정 함수 호출 전이나 공통적인 처리가 필요할 때 사용
프록시 패턴이 적용됨
Spring AOP Tutorial for Beginners - Step by Step with Example
장점
코드 재사용성 높아짐으로 인한 유지보수 용이
사용 사례
로깅
트랜잭션
인증
OOP로 처리하기 어려운 부분을 AOP로 도입하여 쉽게 공통 기능을 추가/수정/삭제 할 수 있도록 함
동작 과정
빈 객체를 생성한 뒤 빈 후처리기에게 전달
어드바이저 내의 포인트컷을 이용해 전달받은 빈이 프록시 적용 대상인지 확인
프록시 생성 대상 빈들을 대상으로 프록시 객체를 생성
프록시를 생성한 빈이라면 프록시를, 프록시를 생성하지 않은 빈이라면 그냥 빈을 반환
빈 후처리기에게 전달받은 객체를 컨테이너의 빈으로 등록
관련 기능들
Target
어떤 Advice가 적용되는 객체
Advice
AspectJ에서 특정 JoinPoint에서 실행되는 코드 이는 @Before, @After, @AfterThrowing, @AfterReturning 등과 같이 사용될 수 있음
JoinPoint
프로그램 실행 중에 추가 동작을 추가할 수 있는 지점 메서드 매개변수, 반환 값 또는 발생한 예외와 같은 주어진 JoinPoint에서 사용 가능한 상태에 대한 반사적인 접근을 제공
PointCut
JoinPoint의 집합을 의미하며, 어떤 Advice가 적용될 지점을 결정하는 데 사용됨
Advisor
단일 조언이 포함된 작은 자체 포함형 Aspect에 해당. 직접적인 기능을 수행하는 것이 아님
Weaving
Aspect를 다른 애플리케이션 유형 또는 객체와 연결하여 조언된 객체를 생성하는 과정
모듈
GCLib, AspectJ
AspectJ
포인트컷 표현식
Declaring a Pointcut :: Spring Framework
어드바이스
After
메서드가 반환되거나 예외 상황이 발생한 후 호출
AfterReturning
메서드가 반환된 이후에 호출
AfterThrowing
메서드가 예외 상황을 발생시킨 이후에 호출
Before
메서드가 호출되기 이전에 호출
Around
메서드의 호출 전과 반환되거나 예외 상황 이후에 호출
참고
Core Technologies :: Spring Framework