AOP란?
AOP란 Aspect Oriented Programming의 약어로 '관점 지향 프로그래밍'이란 뜻 입니다.
비즈니스 로직은 실제 데이터를 처리하는 핵심 로직과 log, 성능 체크와 같은 비핵심 로직이 있습니다.
이 비핵심 로직의 여러 클래스, 메소드에 걸쳐 사용되는 공통적인 기능들입니다.
즉, 비슷한 내용의 코드들이 메소드, 클래스마다 반복되여 코드를 보기 어렵고 비효율적으로 만듭니다.
이에 개발자들은 비핵심 로직을 모듈화하여 필요할 때 마다 가져다 쓰는 것으로 바꾸어 효율성을 높였습니다.
모듈화 된 비핵심 로직을 Aspect(관점)라 하며 비핵심 로직을 모듈화하여 프로그래밍하는 것을 AOP라 합니다.
Aspect의 대상으로는 log, 성능 체크, 에러 처리 등이 있습니다.
AOP 장점
- 코드 중복 최소화
- 모듈화를 통한 재사용성과 유지 보수 향상
- 개발자들의 비즈니스 로직 집중력 향상
이처럼 AOP는 많은 장점을 제공하지만 그 장점을 최대한 활용하려면 AOP에 대해 잘 알아야 합니다.
AOP 주요 용어
AOP에서 자주 사용하는 용어에 대해 알아보겠습니다.
Aspect | 공통적인 기능들을 모듈화 한 것 |
Target | Aspect가 적용될 대상입니다. 메소드, 클래스 등이 이에 해당됩니다. |
Join point | Aspect가 적용될 시점을 의미합니다. 메소드 실행 전, 후 등이 됩니다. |
Advice | Aspect의 기능을 정의한 것으로 메소드의 실행 전, 후, 예외 처리 발생시 실행되는 코드 입니다. |
Point cut | Advice를 적용할 메소드의 범위를 지정하는 것 입니다. |
다음은 AOP에서 자주 사용되는 Annotation에 대해 알아보겠습니다.
@Aspect | 해당 클래스를 Aspect로 사용하겠다는 뜻 입니다. |
@Before | 대상 메소드가 실행되기 전에 Advice를 실행합니다. |
@AfterReturning | 대상 메소드가 정상적으로 실행되고 반환된 후에 Advice를 실행합니다. |
@AfterThrowing | 대상 메소드에 예외가 발생했을 때 Advice를 실행합니다 . |
@After | 대상 메소드가 실행된 후에 Advice를 실행합니다. |
@Around | 대상 메소드가 실행 전, 후 또는 예외 발생 시 Advice를 실행합니다. |
다음 글에서는 Spring Boot에서 AOP를 어떻게 쓰는지 정리해보도록 하겠습니다.
참고 사이트
[Java] Spring Boot AOP(Aspect-Oriented Programming) 이해하고 설정하기
해당 글에서는 Spring AOP에 대해 이해하고 환경설정을 해보는 방법에 대해서 공유를 목적으로 작성한 글입니다. 1) Spring AOP(Aspect-Oriented Programming, AOP) 1. AOP 용어 이해하기 💡 Spring AOP란? - Spring AOP
adjh54.tistory.com