프록시, 프록시 패턴, 데코레이터 패턴
in Spring on Spring Boot
[ Proxy ]
클라이언트가 요청한 결과를 서버에 직접 요청하는 것이 아니라,
어떤 대리자를 통해서 대신 간접적으로 서버에 요청할 수 있다.
그리고 프록시가 중간에서 여러가지 일을 할 수 있다.
[ Proxy의 주요기능 ]
접근 제어
→ 캐싱
→ 권한에 따른 접근 차단(실제 서버에 접근하는 것을 제어)
→ 지연 로딩
부가 기능
→ 원래 서버가 제공하는 기능에 더해서 부가 기능을 수행한다.
→ Ex) 요청 값이나, 응답 값을 중간에 변형한다.
→ Ex) 실행 기간을 측정해서 추가 로그를 남긴다.
[ GoF 디자인패턴 ]
디자인패턴에서 가장 중요한 건 패턴을 만든 의도가 중요!!!
프록시 패턴과 데코레이터 패턴, 모두 프록시를 사용하는 방법이지만 GoF 패턴에서는 이 둘을
의도(intent)에 따라서 구분한다.
[ 프록시 패턴 ]
프록시와 이름만 같을 뿐, 전혀 다른 존재.
접근 제어가 목적이다.
- target : 프록시가 호출한 실제 객체
프록시 패턴의 핵심은 매인객체와 클라이언트 코드를 전혀 변경하지 않고,
프록시를 도입해서 접근 제어를 했다는 점이다. 그리고 클라이언트 코드의 변경 없이
자유롭게 프록시를 넣고 뺄 수 있다. 실제 클라이언트 입장에서는 프록시 객체가
주입되었는지, 실제 객체가 주입되었는지 알지 못한다.
[ 데코레이터 패턴 ]
새로운 기능 추가가 목적.