본문 바로가기
IT/spring

스프링 AOP Join Point

by 뉴코딩맨 2023. 6. 18.
스프링 AOP(Aspect-Oriented Programming)에서 Join Point는 관점 지향 프로그래밍에서 특정 지점을 가리키는 개념입니다. 스프링 AOP Join Point의 의미와 사용 방법, 그리고 예시를 통해 자세히 알아보겠습니다.
 
 

Join Point란?

Join Point는 애플리케이션 실행 중 특정한 지점을 나타냅니다. 스프링 AOP에서는 메서드 실행 시점이 Join Point가 될 수 있습니다. Join Point는 Advice(관점)가 적용될 수 있는 위치를 의미하며, Advice는 Join Point에서 실행됩니다. 예를 들어, 메서드 호출 시점, 예외 발생 시점, 메서드 반환 시점 등이 Join Point가 될 수 있습니다.
 
 

Join Point 정보

Join Point에서는 다양한 정보를 얻을 수 있습니다. 주요한 Join Point 정보는 다음과 같습니다.
  • Target 객체: Join Point가 발생한 대상 객체입니다. 이 객체는 Advice가 적용되는 메서드를 포함하고 있습니다.
  • 메서드 시그니처: Join Point에서 실행되는 메서드의 시그니처 정보입니다. 메서드 이름, 매개변수 타입 등을 포함합니다.
  • 인자 값: Join Point에서 실행되는 메서드에 전달되는 인자 값들입니다.

 

 

Join Point 활용 예시

다음은 Join Point를 활용한 예시입니다.
 
@Aspect
@Component
public class LoggingAspect {

    @Before("execution(public * com.example.service.*.*(..))")
    public void beforeAdvice(JoinPoint joinPoint) {
        String methodName = joinPoint.getSignature().getName();
        Object[] args = joinPoint.getArgs();
        System.out.println("메서드 실행 전: " + methodName);
        System.out.println("인자 값: " + Arrays.toString(args));
    }

    @After("execution(public * com.example.service.*.*(..))")
    public void afterAdvice(JoinPoint joinPoint) {
        String methodName = joinPoint.getSignature().getName();
        System.out.println("메서드 실행 후: " + methodName);
    }
}
 
위의 예시에서는 LoggingAspect라는 Aspect를 정의하고, @Before 어노테이션을 통해 메서드 실행 전에 Advice를 실행합니다. Join Point 정보인 메서드 이름과 인자 값을 출력합니다. 또한, @After 어노테이션을 통해 메서드 실행 후에 Advice를 실행하여 메서드 이름을 출력합니다.

 

 

마무리

스프링 AOP의 핵심 개념 중 하나인 Join Point는 애플리케이션 실행 중 특정한 지점을 가리키며, Advice가 적용되는 위치입니다. Join Point에서는 Target 객체, 메서드 시그니처, 인자 값 등의 정보를 얻을 수 있습니다. 예시를 통해 Join Point의 활용 방법을 확인했습니다. 스프링 개발자라면 Join Point의 개념을 이해하고 AOP를 적절히 활용하여 애플리케이션을 보다 효과적으로 개발할 수 있을 것입니다.
 

'IT > spring' 카테고리의 다른 글

스프링 포인트컷(Pointcut)  (0) 2023.06.19
스프링 Before 어드바이스  (0) 2023.06.19
스프링 AOP (Aspect-Oriented Programming)  (0) 2023.06.17
스프링 Service 클래스  (0) 2023.06.16
스프링 서비스(service) 인터페이스  (0) 2023.06.16

댓글