Aspect : 공통 관심사 (로깅, 보안, 트랜잭션 처리 등)로서 애플리케이션 전반에 걸쳐 적용될 수 있는 모듈
JoinPoint : AOP에서 Aspect를 적용할 수 있는 특정 지점
Pointcut : JoinPoint를 선택하는 표현식
Advice : Join Point에서 실제로 실행될 동작을 정의하는 코드 (Before, After Returing, After Throwing, Around, Introduction)
1. 프록시 객체 생성
Spring AOP는 실제 비즈니스 로직을 처리하는 객체(Target Object)를 감싸는 프록시 객체를 생성한다.
이 프록시 객체는 대상 객체의 메소드 호출을 가로채고, 필요시 Aspect(부가적인 기능)를 실행한다.
프록시는 JDK 동적 프록시(인터페이스 기반) 또는 CGLIB 프록시(클래스 기반)를 사용하여 생성된다.
이 프록시 객체는 기본적으로 대상 객체와 동일한 인터페이스를 구현하거나 상속하여,
클라이언트 코드에서 대상 객체를 사용하는 것처럼 보인다.
2. 조인 포인트(Join Point) 설정
AOP에서는 Join Point라는 개념을 사용하여, 어느 시점에서 Aspect를 적용할지 설정한다.
Spring AOP에서 조인 포인트는 메소드 실행 지점으로 정의된다.
즉, 특정 메소드가 호출되는 시점에 AOP가 적용된다.
3. 포인트컷(Pointcut) 설정
Pointcut은 어떤 Join Point에 Aspect를 적용할지를 정의하는 표현식이다.
@Before, @After, @Around 등의 어노테이션을 사용하여 포인트컷을 정의할 수 있다.
포인트컷은 Aspect가 어떤 메소드에 영향을 미칠지 선택적으로 지정할 수 있다.
예를 들어, 특정 패키지나 클래스의 메소드만을 대상으로 설정할 수 있다.
4. 어드바이스(Advice) 적용
Advice는 조인 포인트에서 실행될 동작이다.
Advice는 메소드 실행 전에(@Before), 메소드 실행 후에(@After), 또는 메소드 실행을 감싸는 형태(@Around)로 정의할 수 있다.
5. 위빙(Weaving)
Weaving은 실제 코드에 Aspect를 적용하는 과정이다. 이 과정에서 Aspect가 적용되는 시점과 방법이 결정된다.
Spring에서는 런타임 위빙 방식을 사용한다.
즉, Spring AOP는 애플리케이션이 실행되는 동안 동적으로 프록시 객체를 생성하고 Aspect를 적용한다.
6. 메소드 호출
클라이언트에서 비즈니스 메소드를 호출하면, 실제로는 대상 객체가 아닌 프록시 객체가 호출된다.
프록시 객체는 메소드 호출을 가로채고, 설정된 Advice(예: 로깅, 트랜잭션 처리 등)를 실행한 후, 실제 메소드를 호출하거나, 필요한 처리를 추가할 수 있다.
7. 결과 반환
프록시 객체는 대상 메소드의 실행 결과를 받아서, 필요한 후처리(예: 예외 처리, 후속 작업 등)를 한 후, 클라이언트에게 반환한다.
[테스트] 성능테스트(부하테스트) : JMeter, Artillery, Gatling (0) | 2025.01.10 |
---|---|
[인프런강의] 백엔드 애플리케이션 성능 테스트하기 (0) | 2025.01.08 |
[JAVA] Random vs SecureRandom vs ThreadLocalRandom (0) | 2024.12.26 |
[테스트] nGrinder 활용한 성능 테스트하는 방법 (0) | 2024.12.22 |
[패키징및배포] Jar vs War (0) | 2024.12.21 |