-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
섹션 8. @Aspect AOP의 강의에서 질문
22.02.28 16:24 작성 조회수 143
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