• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

섹션 8. @Aspect AOP의 강의에서 질문

22.02.28 16:24 작성 조회수 144

0

섹션 8. @Aspect AOP의 강의에서 질문드리고 싶은 내용이 있습니다.

package hello.proxy.config.v6_aop.aspect;

@Slf4j
@Aspect
public class LogTraceAspect {

    private final LogTrace logTrace;

    public LogTraceAspect(LogTrace logTrace) {
        this.logTrace = logTrace;
    }

    @Around("execution(* hello.proxy.app..*(..))")
    public Object execute(ProceedingJoinPoint joinPoint) throws Throwable {
        TraceStatus status = null;
        try {
            String message = joinPoint.getSignature().toShortString();
            status = logTrace.begin(message);

            //로직 호출
            Object result = joinPoint.proceed();

            logTrace.end(status);
            return result;
        } catch (Exception e) {
            logTrace.exception(status, e);
            throw e;
        }
    }
}

에서 

//로직 호출

Object result = joinPoint.proceed();

이 부분이 혼동이 되는 부분이 있습니다.

아래의 코드를 봐주십시오.

 

package hello.proxy.app.v3;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
public class OrderControllerV3 {

    private final OrderServiceV3 orderService;

    public OrderControllerV3(OrderServiceV3 orderService) {
        this.orderService = orderService;
    }

    @GetMapping("/v3/request")
    public String request(String itemId) {
        orderService.orderItem(itemId);
        return "ok";
    }

    @GetMapping("/v3/no-log")
    public String noLog() {
        return "ok";
    }

}

 

/v3/request에 접속하는 순간 로그가 기록되고, 핵심 로직이 실행되는데요.

Object result = joinPoint.proceed(); 에서 joinPoint.proceed()이 실행되면 request 메소드가 실행되고, Object result에는 "ok"라는 문자열이 저장되는 것인가요?

 

두서없는 질문 죄송합니다.

읽어주셔서 감사합니다.

 

 

 

 

답변 1

답변을 작성해보세요.

1

David님의 프로필

David

2022.02.28

안녕하세요. with_all님, 공식 서포터즈 David입니다.

네, 맞습니다. AOP가 적용된 메서드의 반환 값이 담깁니다.

감사합니다.

with_all님의 프로필

with_all

질문자

2022.02.28

답변 감사합니다!