[Spring] AOP - 조인 포인트

zini9188·2023년 2월 9일
0

Spring

목록 보기
12/33

조인 포인트

AOP를 적용할 수 있는 지점을 의미하며 AOP를 수행하는 메서드는 조인 포인트 인스턴스를 인자로 받는다.

  • 어드바이스가 적용될 수 있는 위치, 메서드 실행, 생성자 호출, 필드 값 접근, static 메서드 접근 같은 프로그램 실행 중지점을 나타냄

  • AspectJ를 사용해서 컴파일 시점과 클래스 로딩 시점에 적용하는 AOP는 바이트 코드를 실제 조작하기 때문에 해당 기능을 모든 지점에 다 적용할 수 있음

  • 프록시 방식을 사용하는 스프링 AOP는 메서드 실행 지점에만 AOP를 적용 가능

  • 프록시는 메서드 오버라이딩 개념으로 동작

  • 생성자나 static 메서드, 필드 값 접근에는 프록시 개념이 적용될 수 없음

  • 프록시를 사용하는 스프링 AOP의 조인 포인트는 메서드 실행으로 제한

  • 프록시 방식을 사용하는 스프링 AOP는 스프링 컨테이너가 관리할 수 있는 스프링 빈에만 AOP를 적용할 수 있음

  • JoinPoint 메서드는 어드바이스의 종류에 따라 사용 방법이 약간 다르지만 기본적으로 어드바이스 메서드의 매개변수로 선언하면 됨

조인 포인트 인터페이스의 주요 기능

  • JoinPoint.getArgs()

    • JoinPoint에 전달된 인자를 배열로 반환
  • JoinPoint.getThis()

    • AOP 프록시 객체를 반환
  • JoinPoint.getTarget()

    • AOP가 적용된 대상 객체를 반환

    • 클라이언트가 호출한 비즈니스 메소드를 포함하는 비즈니스 객체를 반환

  • JoinPoint.getSignature()

    • 조언되는 메서드에 대한 설명을 반환

    • 클라이언트가 호출한 메소드의 시그니처(리턴타입, 이름, 매개변수) 정보가 저장된 Signature 객체를 반환

  • Signature

    • 객체가 선언하는 모든 연산은 연산의 이름, 매개변수로 받아들이는 객체들
  • Signature가 제공하는 메서드

    • String getName()
      • 클라이언트가 호출한 메소드의 이름을 반환
    • String toLongString()
      • 클라리언트가 호출한 메소드의 리턴타입, 이름, 매개변수를 패키지 경로까지 포함해서 반환
    • String toShortString()
      • 클라이언트가 호출한 메소드 시그니처를 축약한 문자열로 반환
    • JoinPoint.toString()
      • 조언되는 방법에 대한 유용한 설명을 인쇄
  • ProceedingJoinPoint 인터페이스의 주요 기능

    • proceed()
      • 다음 어드바이스나 타겟을 호출
profile
백엔드를 지망하는 개발자

0개의 댓글