Spring의 관점 지향 프로그래밍(Aspect-Oriented Programming)

2024. 4. 12. 02:44Spring Boot/Spring Core

반응형

들어가며

Spring의 관점 지향 프로그래밍(Aspect-Oriented Programming. AOP)은 ‘aspects’라고 명명된 개발자의 관심사에 따라 클래스를 분류하여 개발하는 프로그래밍 기법이다.

예를 들면, ‘logging’ 기능과 ‘transaction’ 기능의 설정을 따로 관리하는 것을 들 수 있다. 이 ‘aspects’에 대한 동작을 ‘advice’라 부르고, 각 ‘advice’의 ‘join point’에서 ‘pointcut’개발하는 방식이다.

AOP는 개발자가 어플리케이션의 비즈니스 로직과 다른 관심사들을 분리할 수 있게 해주고, 그들을 모듈화하여 코드 재사용성과 가독성을 높인다.

Spring AOP Terminology

Aspect

API가 갖고 있는 하나의 ‘관심사’

예를 들어 ‘Logging Module’은 ‘Logging’이 관심사이며, 어플리케이션 내 여러 부분에서 이 관심사를 공유할 수 있다.

Join Point

어플리케이션 코드가 Aspect Module을 적용하는 부분

Advice

어플리케이션 코드 실행 이전 또는 이후에 Aspect Module이 작동되는 메서드

Pointcut

Advice가 적용될 Join Point의 집합

Weaving

컴파일, 로딩 또는 런타임에 여러 개의 Aspect를 연결하는 과정

Advice의 종류

  • before : 메서드가 실행되기 전 advice 실행
  • after : 메서드가 실행된 후 advice 실행
  • after-returning : 메서드가 성공적으로 실행된 경우에만 advice 실행
  • after-throwing : 메서드에서 예외가 발생한 경우에만 advice 실행
  • around : 메서그 실행 전, 후로 advice 실행

Custom Aspect의 종류

  • XML Schema Based
  • @AspectJ Based

Resources

반응형