Spring AOP

나찬웅·2024년 11월 1일

Spring

목록 보기
5/6

📌 Spring AOP란?

Spring AOP 란, 관점 지향 프로그래밍(Aspect Oriented Programming)의 약자로일반적으로 사용하는 클래스(Service, Dao 등) 에서 중복되는 공통 코드 부분(commit, rollback, log 처리)을 별도의 영역으로 분리
해 내고, 코드가 실행 되기 전이나 이 후의 시점에 해당 코드를 붙여 넣음으로써 소스 코드의 중복을 줄이고, 필요할 때마다 가져다 쓸 수 있게 객체화하는 기술을 말한다.

  • 위 이미지와 같이 공통되는 부분을 따로 빼내어 필요한 시점에 해당코드를 추가해주는 기술

Spring AOP의 동작 구조

  • 공통되는 부분을 따로 빼내어 작성하는 메소드를 Advice라고 이야기 하며,
    Advice를 적용될 수 있는 모든 관점(시점, 메소드)을 JoinPoint,
    JoinPoint 중 실제 Advice를 적용할 부분을 Pointcut
    그리고 그 시점에 공통 코드를 끼워 넣는 작업을 Weaving 이라고 말한다.

Aspect 란 ?

“ Advice + Pointcut = Aspect “

실제로 동작 코드를 의미하는 Advice와
작성한 Advice가 실제로 적용된 메소드인 Pointcut을 합친 개념으로
부가기능(로깅, 보안, 트랜잭션 등)을 나타내는 공통 관심사에 대한 추상적인 명칭.
(여러 객체에 공통으로 적용되는 부가기능을 작성한 클래스 나타냄)


⭐️ Spring AOP 특징

 Spring은 프록시(Proxy) 기반 AOP를 지원한다

Spring은 대상 객체(Target Object)에 대한 프록시를 만들어 제공하며, 타겟을 감싸는 프록시는 Server Runtime 시에 생성된다.
이렇게 생성된 프록시는 대상 객체를 호출 할 때 먼저 호출되어
Advice의 로직을 처리 후 대상 객체를 호출한다.


 Proxy는 대상 객체의 호출을 가로챈다 (Intercept)

Proxy는 그 역할에 따라 대상 객체에 대한 호출을 가로챈 다음,

Advice의 부가기능 로직을 수행하고 난 후에 타겟의 핵심기능 로직을 호출하거나 -> 전처리 Advice

타겟의 핵심기능 로직 메소드를 호출 한 후에 Advice의 부가기능을 수행한다. -> 후처리 Advice


 Spring AOP는 메소드 조인 포인트만 지원한다

Spring은 동적 프록시를 기반으로 AOP를 구현하기 때문에 메소드 조인포인트만 지원한다.

즉, 핵심기능(대상 객체)의 메소드가 호출되는 런타임 시점에만 부가기능(어드바이스)을 적용할 수 있다.

0개의 댓글