프록시를 사용하여 기존 코드를 전혀 수정 없이 로그 추적 기능을 도입해보자.


여기에 로그 추적용 프록시를 적용해보자.


@RequiredArgsConstructor
public class OrderControllerInterfaceProxy implements OrderControllerV1 {
private final OrderControllerV1 target; // 실제 객체를 참조
private final LogTrace logTrace;
@Override
public String request(String itemId) {
TraceStatus status = null;
try {
status = logTrace.begin("OrderController.request()");
//target 호출
String request = target.request(itemId); // 실제 객체의 메서드를 호출
logTrace.end(status);
return request;
}catch (Exception e){
logTrace.exception(status, e);
throw e;
}
}
@Override
public String noLog() {
return target.noLog();
}
}