스프링/스프링 핵심 원리 - 고급편

34. 인터페이스 기반 프록시 vs 구체클래스 프록시

sdafdq 2024. 1. 19. 19:49

사실 다른 클래스 끼리의 관계 자체는 똑같은데, 

 

인터페이스냐 구체클래스냐의 차이인데,

 

아무래도 인터페이스가 좋긴 하다.

 

역할과 기능구현이 딱 나뉘니까.

 

 

그리고, 구체 클래스 프록시의 단점은.

의미없게 super 생성자 호출해야 한다는 점

final 클래스면 상속 불가

final 메소드면 오버라이드 불가.

 

인터페이스 기반 프록시의 단점은 인터페이스를 써야 한다는 점.

 

또 캐스팅 관련해서 단점이 있다고 한다. 이건 나중에..

 

 

이론적으론 역할과 구현을 인터페이스처럼 확실히 나누는 게 좋지만,

 

바뀔 일 없이 구현체 하나만 만들어도 되는 것이 존재한다.

 

그래서 둘이 섞여 있으므로,

 

둘 다 프록시를 만들 수 있어야 한다.

 

 

 

그리고, 지금까지 봐왔단 단점.

 

기능은 LogTrace 하나인데, 그 공통적인 것을 프록시마다 계속 중복되게 집어넣고 있다.

 

이걸 해결하는 것이 동적으로 프록시를 생성한다고 해서, 동적 프록시 기술이다.