← 질문 목록
#130깊이 0

내부 메서드 호출에 부가기능이 빠지는 이유는?

프레임워크심화설계 원칙

같은 객체 안에서 this로 호출하면 프록시를 거치지 않기 때문이다. 프록시가 가로채야 트랜잭션이나 로깅 같은 어드바이스가 실행된다.

  1. 1. 클라이언트에서 프록시로: 공개 메서드를 호출한다
  2. 2. 프록시에서 어드바이스로: 트랜잭션 등을 적용한다
  3. 3. 어드바이스에서 대상 객체로: 실제 메서드를 호출한다
  4. 4. 대상 객체에서 대상 객체로: 내부 호출은 프록시를 우회한다

JDK 동적 프록시는 인터페이스를 바탕으로 프록시를 만든다. 클래스 기반 프록시는 상속을 쓰므로 final 클래스와 final 메서드를 가로챌 수 없다.

적용 경계를 별도 빈으로 분리해 외부 호출로 만드는 방법이 명확하다. 프록시 노출이나 자기 자신 주입은 결합도를 높이므로 우선 선택이 아니다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

내부 메서드 호출에 부가기능이 빠지는 이유는?