강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

코린코린님의 프로필 이미지
코린코린

작성한 질문수

스프링 핵심 원리 - 고급편

스프링 AOP 구현3 - 어드바이스 추가

@Aspect 안에 여러 어드바이스 작성 시, 어드바이저는 어떻게 구성이 되나요?

작성

·

583

0

안녕하세요!

항상 좋은 강의 및 답변주셔서 감사합니다.

 

강의를 듣고 복습하던 도중 한 가지 궁금한 부분이 있어 글을 작성하게 되었습니다.

 

@Aspect
@Slf4j
public class AspectV2 {


@Pointcut("execution(* hello.aop..*.*(..))")
public void allOrder(){}

// public java.lang.String hello.aop.order.OrderRepository.save(java.lang.String)
@Around("allOrder()")
public Object doLog1(ProceedingJoinPoint joinPoint) throws Throwable {
log.info("[log] {}", joinPoint.getSignature());
return joinPoint.proceed();
}

@Around("allOrder()")
public Object doLog2(ProceedingJoinPoint joinPoint) throws Throwable {
log.info("[log] {}", joinPoint.getSignature());
return joinPoint.proceed();
}

}

 

위의 코드에서 어드바이저는 총 몇개가 생기는지 궁금합니다.

 

@Aspect가 있는 빈이 생길 경우, AutoProxyCreator가 @Aspect를 읽고 어드바이저를 작성해서 @Aspect Advisor 빌더 내부에 저장해두는 것으로 알려주셨는데요...

 

위의 코드가 실행되면, 어드바이저는 2개가 되는 걸까요? 아니면 1개만 되는 걸까요? 제가 이해하기로는 어드바이저는 주로 Default Advisor를 사용해서 1포인트컷 + 1어드바이저로 구성된다고 이해를 해서 2개가 생길 것으로 생각되긴 한데...

 

항상 좋은 강의 및 답변 해주셔서 고맙습니다.

감사합니다! 

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 안상혁님

하나의 애프펙트 안에 @Around를 통해서 여러 어드바이저를 구현한다 생각하시면 됩니다.

감사합니다.

코린코린님의 프로필 이미지
코린코린
질문자

안녕하세요, 영한님. 답글 감사드립니다

어스펙트 안에 여러 어드바이저가 생긴다면, 여러 어드바이저를 가진 어스펙트를 가진 하나의 프록시만 생성되는 것으로 이해하면 될까요? 

김영한님의 프로필 이미지
김영한
지식공유자

네 맞습니다. 그런데 어스펙트가 여러가지 여도 프록시는 하나만 생성됩니다. 그 안에 여러 어드바이저가 있겠지요^^

코린코린님의 프로필 이미지
코린코린

작성한 질문수

질문하기