Spring
[Spring] AOP의 개념
재담
2022. 2. 16. 22:53
AOP란?
Aspect Oriented Programming(관점 지향 프로그래밍)의 줄임말로서, AOP는 문제를 바라보는 관점을 기준으로 프로그래밍하는 기법을 말한다. AOP는 문제를 해결하기 위한 핵심 관심 사항과 전체에 적용되는 공통 관심 사항을 기준으로 프로그래밍 함으로써 공통 모듈을 여러 코드에 쉽게 적용할 수 있도록 도와준다.

기본적인 개념은 공통 관심 사항을 구현한 코드를 핵심 로직을 구현한 코드 안에 삽입하는 것이다. 그런데 공통 기능을 직접적으로 호출하는 것이 아니라, 핵심 로직을 구현한 코드를 컴파일하거나 컴파일된 클래스를 로딩하거나 로딩한 클래스의 객체를 생성할 때 AOP가 적용되어 핵심 로직 구현 코드 안에 공통 기능이 삽입된다.
AOP 라이브러리가 알맞게 삽입해주기 때문에 트랜잭션이나 보안 검사와 같은 공통 기능이 변경되더라도 핵심 로직 구현 코드를 변경할 필요가 없다.
AOP 용어
- Advice : 언제 공통 관심 기능을 핵심 로직에 적용할지를 정의
- Joinpoint : Advice를 적용 가능한 지점을 의미. 메서드 호출, 필드 값 변경 등이 해당
- Pointcut : Joinpoint의 부분 집합으로서 실제로 Advice가 적용되는 Joinpoint를 표현(정규식이나 AspectJ 문법 이용
- Weaving : Advice를 핵심 로직 코드에 적용하는 것
- Aspect : 여러 객체에 공통으로 적용되는 기능(ex. 트랜잭션, 보안 등)
Reference
- 웹 개발자를 위한 Spring 4.0 프로그래밍 (최범균 저)