Skip to content

[Chapter 07] 왜 @Around 어드바이스만 차별하는 것인가 #75

Discussion options

You must be logged in to vote
  1. @Around 어드바이스가 특정 메서드의 실행 전과 후 또는 예외가 발생했을 때 실행되는 역할이 proceed()라는 메서드를 통해서 이루어진다고 합니다.
    그런데 이 proceed()라는 메서드를 ProceedingJoinPoint인터페이스는 가지고 있지만 JoinPoint인터페이스는 가지고 있지 않아서
    @Around 어드바이스는 반드시 ProceedingJoinPoint를 주입받아야 된다고 합니다.

  2. JoinPoint, ProceedingJoinPoint가 어드바이스 메서드의 첫 번째 인자로 줘야되는 이유는 여러 가지가 있다고 합니다.

    2-1. 근본적으로 스프링 AOP 설계 자체를 그렇게 만들었다.
    JoinPoint는 메서드 실행의 특정 지점을 나타내고
    ProceedingJoinPoint는 어드바이스가 메서드 실행을 진행하거나 중단할 수 있는 기능을 추가로 가지는데
    이 두 인터페이스를 첫번째 인자로 받으면 스프링 AOP가 런타임 시에 두 인터페이스의 구현체를 적절하게 주입할 수 있어서 설계를 첫번째 인자로 받게 만들었다고 합니다.

    2-2. 스프링 AOP는 어드바이스 메서드의 인자 위치에 일정한 규칙을 가지고 있다.
    스프링 AOP는 어드바이스 메서드의 인자 위치에 일정한 규칙을 가지고 있는데 이를 관례적으로 지켜야 다른 개발자들이 읽었을 때, 코드 가독성이 좋아진다고 하고 그런 규칙 중에 하나가 JoinPoint, Proc…

Replies: 2 comments 3 replies

Comment options

You must be logged in to vote
3 replies
@corock
Comment options

corock Oct 22, 2023
Maintainer Author

@corock
Comment options

corock Oct 22, 2023
Maintainer Author

@corock
Comment options

corock Oct 22, 2023
Maintainer Author

Answer selected by corock
Comment options

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
chapter07 스프링 AOP 와 테스트, 자동 설정 원리
3 participants