Post

AOP

AOP(Aspect Oriented Programming)공식문서

AOP를 한글로 번역하면 관심 지향 프로그래밍 정도로 해석할 수 있음

AOP에서의 Aspect애플리케이션에 필요한 기능 중에서 공통적으로 적용되는

공통 기능에 대한 관심과 관련이 있음

## 공통 관심 사항과 핵심 관심 사항

면 애플리케이션 전반에 걸쳐 공통적으로 사용되는 기능들이 있기 마련인데,

이러한 공통 기능들에 대한 관심사를 바로 공통 관심 사항(Cross-cutting concern)이라고 함

비즈니스 로직 즉, 애플리케이션의 주목적을 달성하기 위한 핵심 로직에 대한 관심사를

핵심 관심 사항(Core concern)이라고 함

핵심 관심 사항에 반대되는 개념으로 공통 관심 사항부가적인 관심 사항이라고 표현하기도 함

커피 주문을 위한 애플리케이션을 예로 들면,

커피 전문점의 주인이 고객에게 제공하는 커피 메뉴를 구성하기 위해 커피 종류를 등록하는 것과

고객이 마시고 싶은 커피를 주문하는 기능은 애플리케이션의 핵심 관심 사항에 해당 됨

하지만 커피 주문 애플리케이션에 아무나 접속하지 못하도록 제한하는 애플리케이션 보안에 대한 부분은 애플리케이션 전반에 공통적으로 적용되는 기능이기 때문에 공통 관심 사항에 해당 됨

image AOP라는 것은

애플리케이션의 핵심 업무 로직에서 로깅이나 보안, 트랜잭션 같은 공통 기능 로직들을 분리하는 것

AOP를 사용하는 이유

핵심 로직에서 공통 기능을 분리하는 이유

  • 코드의 간결성 유지
  • 객체 지향 설계 원칙에 맞는 코드 구현
  • 코드의 재사용

Spring AOP

의존성 추가

1
2
3
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-aop'
}

1. 주요 용어 이해하기


용어설명
Aspect- 공통적인 기능들을 모듈화 한것을 의미합니다.
Target- Aspect가 적용될 대상을 의미하며 메소드, 클래스 등이 이에 해당 됩니다.
Join point- Aspect가 적용될 수 있는 시점을 의미하며 메소드 실행 전, 후 등이 될 수 있습니다.
Advice- Aspect의 기능을 정의한 것으로 메서드의 실행 전, 후, 예외 처리 발생 시 실행되는 코드를 의미합니다.
Point cut- Advice를 적용할 메소드의 범위를 지정하는 것을 의미합니다.

2. 주요 어노테이션


메서드설명
@Aspect해당 클래스를 Aspect로 사용하겠다는 것을 명시합니다.
@Before대상 “메서드”가 실행되기 전에 Advice를 실행합니다.
@AfterReturning대상 “메서드”가 정상적으로 실행되고 반환된 후에 Advice를 실행합니다.
@AfterThrowing대상 “메서드에서 예외가 발생”했을 때 Advice를 실행합니다.
@After대상 “메서드”가 실행된 후에 Advice를 실행합니다.
@Around대상 “메서드” 실행 전, 후 또는 예외 발생 시에 Advice를 실행합니다.
This post is licensed under CC BY 4.0 by the author.