반응형
AOP(Aspect-Orented Programming) 이란?
관점(Aspect)지향 프로그래밍
문제를 바라보는 관점을 기준으로 프로그래밍 하는 기법을 말한다.
기본적인 개념은 공통 관심 사항을 구현한 핵심 로직을 구현한 코드 안에 삽입하는 것이다.
위 그림을 MVC 에 적용시켜 보자면
- presentation layer → View
- Business layer → Controller
- Data Access Layer → Model
AOP(Aspect Oriented Programming) 사용 이유?
- 애플리케이션 전반에 걸쳐 적용되는 공통 기능이 존재하는데 (로깅, 트렌젝션, 보안 등)
- 핵심 비지니스 로직과 구분하기 위해 공통 기능을 공통 관심사항(cross-cutting concern)이라고 표현하며, 핵심 관심사항(core concern)이라고 표현한다.
- 공통 관심 사항들을 OOP 객체 지향 기법(상속이나 위임 등을)사용해서 여러 모듈에 효과적으로 적용하는데 한계가 있으며, 중복된 코드를 만들게 된다.
- 이런 한계를 극복하기 위해 AOP기법이 소개되었다.
요약
- OOP 에서 각 클래스별로 공통적으로 사용하는 기능이 있을 경우 코드의 중복이 발생하게 되며 일관된 유지 보수가 어려워진다.
- 이를 보완하여 AOP를 이용해 공통적인 부분을 모듈화하여 관리할 수 있게 해준다.
주요 용어
- Joinpoint
- Advice를 적용 가능한 지점
- 메서드 호출, 필드 값 변경 등이 해당
- Pointcut
- Joinpoint의 부분 집합으로 실제로 Advice 가 적용되는 Joinpoint를 나타냄
- Advice
- 언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의하고 있다
- Weaving
- Advice를 핵심 로직 코드에 적용하는 것
- 즉 공통 코드를 핵심 로직에 삽입하는 것
- Aspect
- 여러 객체에 공통으로 적용되는 기능
- 트랜젝션과 보안 등
이미지 출처
https://velog.io/@kai6666/Spring-Spring-AOP-%EA%B0%9C%EB%85%90
[Spring] Spring AOP 개념
AOP는 관점(Aspect)지향 프로그래밍으로, 관점을 기준으로 다양한 기능을 분리하여 보는 프로그래밍이다. 관점(Aspect)이란, 부가 기능과 그 적용처를 정의하고 합쳐서 모듈로 만든 것이다.OOP와 이름
velog.io
반응형
'Study > Spring' 카테고리의 다른 글
springboot 에서 어노테이션기반 MyBatis 적용하기 (xml 사용하지 않고) (0) | 2023.12.16 |
---|---|
[Spring]Builder (0) | 2023.10.06 |
[Spring] AOP 예제 (0) | 2023.09.25 |
[Spring] Spring 시작하기 (0) | 2023.09.24 |
[Spring] 2. DI(Dependancy Injection)란? (1) | 2023.09.24 |