답변 1
0
안녕하세요. 배만진님
다음 코드 프록시 코드에서 joinPoint.proceed()가 호출되면, 실제 memberService 클래스를 실행합니다.
그리고 실제 memberService가 필요한 로직을 처리(memberRepository 호출 등등..) 하고 결과를 반환하면, 다음 코드의 return 문이 호출됩니다.
자바 문법상 finally는 return이 되어도 호출되기 때문에, 최종적으로 finally 코드가 호출됩니다.
long start = System.currentTimeMillis();
System.out.println("START: " + joinPoint.toString());
try {
return joinPoint.proceed(); //실제 객체 호출
} finally {
long finish = System.currentTimeMillis();
long timeMs = finish - start;
System.out.println("END: " + joinPoint.toString()+ " " + timeMs + "ms");
}
감사합니다.
프록시 -> 실제 -> 프록시로 다시 돌아오는군요! 코드를 제대로 봤으면 충분히 이해했을 텐데... 그림에만 너무 집중해서 놓쳤던 것 같습니다.
답변 감사합니다!