반응형
스프링 AOP (Aspect-Oriented Programming)
AOP 란, Aspect-Oriented Programming 의 약자로 관점 지향 프로그래밍이라 불린다. 관점 지향은 쉽게 표현하자면 어떤 로직을 핵심적인 관점, 부가적인 관점으로 나누어 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란, 공통한 로직이나 기능을 하나로 묶는 것을 뜻한다.
AOP 에서 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어 모듈화하겠다는 뜻이다. 이 때, 소스 코드상 다른 부분에서 반복해서 사용되는 코드들을 발견할 수 있는데 이것을 Crosscutting Concerns (흩어진 관심사) 라고 부른다.
위와 같이 흩어진 관심사들을 Aspect 로 모듈화하고 핵심적인 비즈니스 로직에서 분리해 재사용하는 것이 AOP 의 취지이다.
OOP 와 AOP 개념 비교
더보기
- OOP : 비즈니스 로직의 모듈화
- 모듈화의 핵심 단위는 비즈니스 로직
- AOP : 인프라 혹은 부가기능의 모듈화
- 각 모듈들의 주요 목적 외 필요한 부가적인 기능들
- 대표적 예 : 로깅, 트랜잭션, 보안 등
AOP 주요 개념
- Aspect : 위에서 설명한 흩어진 관심사를 모듈화한 것
- Target : Aspect 를 적용한 곳 (클래스, 메소드, ...)
- Advice : 실질적으로 어떤 동작을 해야할 지에 대한 것
- JoinPoint : 어드바이스가 적용될 위치
- PointCut : 부가기능이 적용될 대상을 선정하는 방법의 표현
- Proxy : 타겟을 감싸서 타겟의 요청을 대신 받아주는 래핑 오브젝트
- Introduction : 타겟 클래스에 코드 변경없이 신규 메소드나 멤버 변수를 추가하는 기능
- Weaving : 지정된 객체에 Aspect 를 적용해 새로운 프록시 객체를 생성하는 과정
'Study > Spring' 카테고리의 다른 글
[Spring 5 Recipes] Spring 5 Recipes 2장 정리 #7 (0) | 2021.09.27 |
---|---|
[Spring 5 Recipes] Spring 5 Recipes 2장 정리 #6 (0) | 2021.09.24 |
[Spring 5 Recipes] Spring 5 Recipes 2장 정리 #5 (0) | 2021.09.23 |
[Spring 5 Recipes] Spring 5 Recipes 2장 정리 #4 (0) | 2021.09.21 |
[Spring 5 Recipes] Spring 5 Recipes 2장 정리 #3 (0) | 2021.09.17 |