Spring AOP Pointcut 표현식 - this, target
목차 Spring AOP Pointcut 표현식 - this, target Spring AOP Pointcut 표현식 - Advice 에 매게변수 전달 Spring AOP Pointcut 표현식 - bean Spring AOP Pointcut 표현식 - @args Spring AOP Pointcut 표현식 - @annotation Spring AOP Pointcut 표현식 - @target, @within Spring AOP Pointcut 표현식 - args Spring AOP Pointcut 표현식 - within Spring AOP Pointcut 표현식 - execution Spring 핵심원리 고급편 - Pointcut 포인트컷 표현식 - this, targetthis 와 target 은 객체를 대상으로 AOP 를 적용할 때 사용하는 포인트컷 표현식입니다. 두 표현식 모두 상위 타입이나 인터페이스를 이용해 AOP 를 적용할 수 있습니다. this 는 스프링 빈으로 등록돼 있는 프록시 객체를 대상으로 Advice 를 적용합니다. 때문에 스프링에서 프록시 객체를 생성하는 전략에 따라 AOP 가 다르게 적용될 수 있습니다. target 은 실제 객체를 대상으로 Advice 를 적용합니다. this 와 target 작동방식 확인을 위한 테스트 코드@AutowiredMemberService memberService;@Testvoid success() { log.info("memberService Proxy={}", memberService.getClass()); memberService.hello("helloA");}@Aspectstatic class ThisTargetAspect { //부모 타입 허용 @Around("this(hello.aop.member.MemberService)") public Object doThisInterface(ProceedingJoinPoint joinPoint) throws Throwable { log.info("[this-interface] {}", joinPoint.getSignature()); return joinPoint.proceed(); } //부모 타입 허용 @Around("target(hello.aop.member.MemberService)") public Object doTargetInterface(ProceedingJoinPoint joinPoint) throws Throwable { log.info("[target-interface] {}", joinPoint.getSignature()); return joinPoint.proceed(); } @Around("this(hello.aop.member.MemberServiceImpl)") public Object doThis(ProceedingJoinPoint joinPoint) throws Throwable { log.info("[this-impl] {}", joinPoint.getSignature()); return joinPoint.proceed(); } @Around("target(hello.aop.member.MemberServiceImpl)") public Object doTarget(ProceedingJoinPoint joinPoint) throws Throwable { log.info("[target-impl] {}", joinPoint.getSignature()); return joinPoint.proceed(); }} JDK 동적 프록시를 이용한 프록시 객체 생성