#9. AOP

jychan99·2025년 3월 18일

개념정리

목록 보기
9/22

스프링 AOP (Aspect Oriented Programming)

AOP (Aspect Oriented Programming) 관점 지향 프로그래밍
관점지향은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어 보고, 그 관점을 기준으로 각각 모듈화 하는것이다.

모듈화 : 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것.

스프링 AOP특징

  • 스프링 빈에만 AOP를 적용 가능
  • 모든 AOP 기능을 제공하는 것이 아닌 스프링 IoC와 연동하여 엔터프라이즈 애플리케이션에서 가장 흔한 문제(중복코드, 프록시 클래스 작성의 번거로움, 객체들 간 관계 복잡도 증가 ...)에 대한 해결책을 지원하는 것이 목적

소스코드상에서 다른부분에서 계속 반복해서 쓰는 코드들이 있을것이다.
그 반복되는 코드를 Aspect로 모듈화 하고 핵심적인 비즈니스 로직에서 분리해서 재사용할 수 있도록 만드는것이 AOP의 취지이다.

AOP용어 및 개념

  • Aspect
    공통 기능
    어드바이스 + 포인트컷을 모듈화한 애플리케이션의 횡단 기능
  • Join Point
    애플리케이션 실행 흐름에서의 특정 포인트 (ex. 클래스 초기화, 메서드 호출, 예외 발생 등)
    한 마디로 AOP를 적용할 수 있는 모든 지점 (스프링에서는 메서드 실행 지점으로 제한)
  • Advice
    조인포인트에서 실행되는 코드 즉 부가기능 그 자체
    에스팩트를 언제 핵심 코드에 적용할지 정의
  • Pointcut
    조인포인트 중 어드바이스가 적용될 지점을 선별하는 기능
    주로 AspectJ 표현식으로 지정
  • Target
    핵심 기능을 담은 모듈 (=부가 기능 부여 대상)
    어드바이스를 받는 객체이고, 포인트컷으로 결정된다
  • Advisor
    스프링 AOP에서만 쓰는 용어로, 하나의 어드바이스와 하나의 포인트컷으로 구성된 에스팩트를 특별하게 지칭하는 말이다

주요 어노테이션

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

참고블로그 : 새로비:티스토리

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐍

0개의 댓글