AOP를 적용할 수 있는 지점을 의미하며 AOP를 수행하는 메서드는 조인 포인트 인스턴스를 인자로 받는다.
어드바이스가 적용될 수 있는 위치, 메서드 실행, 생성자 호출, 필드 값 접근, static 메서드 접근 같은 프로그램 실행 중지점을 나타냄
AspectJ를 사용해서 컴파일 시점과 클래스 로딩 시점에 적용하는 AOP는 바이트 코드를 실제 조작하기 때문에 해당 기능을 모든 지점에 다 적용할 수 있음
프록시 방식을 사용하는 스프링 AOP는 메서드 실행 지점에만 AOP를 적용 가능
프록시는 메서드 오버라이딩 개념으로 동작
생성자나 static 메서드, 필드 값 접근에는 프록시 개념이 적용될 수 없음
프록시를 사용하는 스프링 AOP의 조인 포인트는 메서드 실행으로 제한
프록시 방식을 사용하는 스프링 AOP는 스프링 컨테이너가 관리할 수 있는 스프링 빈에만 AOP를 적용할 수 있음
JoinPoint 메서드는 어드바이스의 종류에 따라 사용 방법이 약간 다르지만 기본적으로 어드바이스 메서드의 매개변수로 선언하면 됨
JoinPoint.getArgs()
JoinPoint.getThis()
JoinPoint.getTarget()
AOP가 적용된 대상 객체를 반환
클라이언트가 호출한 비즈니스 메소드를 포함하는 비즈니스 객체를 반환
JoinPoint.getSignature()
조언되는 메서드에 대한 설명을 반환
클라이언트가 호출한 메소드의 시그니처(리턴타입, 이름, 매개변수) 정보가 저장된 Signature 객체를 반환
Signature
Signature가 제공하는 메서드
ProceedingJoinPoint 인터페이스의 주요 기능
proceed()