You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
자바 언어에서 다형성은 인터페이스나 클래스를 구분하지 않고 모두 적용된다. 해당 타입과 그 타입의 하위
타입은 모두 다형성의 대상이 된다. 자바 언어의 너무 기본적인 내용을 이야기했지만, 인터페이스가 없어도 프록시가 가능하다는 것을 확실하게 깊고 넘어갈 필요가 있어서 자세히 설명했다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
1️⃣3️⃣ 인터페이스 기반 프록시 - 적용
인터페이스와 구현체가 이는 V1 App에 프록시를 도입해서 LogTrace를 사용해보자.
프록시를 사용하면 기존 코드를 전혀 수정하지 않고 로그 추적 기능을 도입할 수 있다고 한다. 어떻게하는지 알아보고 그 부분을 정확히 배워가자.
V1 기본 클래스 의존 관계 - 클래스 의존 관계
애플리케이션 실행 시점에 프록시를 사용하도록 의존 관계를 설정해주어야 한다. 이 부분은 빈을 등록하는 설정 파일을 활용하면 된다.
➡️OrderRepositoryInterfaceProxy
🗒️ 위 코드 설명
➡️OrderServiceInterfaceProxy
➡️OrderControllerInterfaceProxy
➡️InterfaceProxyConfig
✅ V1 프록시 런타임 객체 의존 관계 설정
이제 프록시의 런타임 객체 의존 관계를 설정하면 된다.
프록시는 내부에 실제 객체를 참조하고 있다.
의존관계
스프링 빈으로 프록시 객체의 빈을 등록했다. 따라서 앞으로 스프링 빈을 주입 받으면 실제 객체 대신에 프록시 객체가 주입된다.
실제 객체가 스프링 빈으로 등록되지 않는다고 해서 사라지는 것은 아님. 프록시 객체가 실제 객체를 참조하기 때문에 프록시를 통해서 실제 객체를 호출할 수 있다.
AppV1Config를 통해 프록시를 적용하기 전
➡️ ProxyApplication
✅ 정리
추가된 요구사항을 다시 확인
추가된 요구사항
원본 코드를 전혀 수정하지 않고, 로그 추적기를 적용해라.특정 메서드는 로그를 출력하지 않는 기능보안상 일부는 로그를 출력하면 안된다.v1 - 인터페이스가 있는 구현 클래스에 적용1️⃣4️⃣ 구체 클래스 기반 프록시 - 예제1
➡️ ConcreteLogic
➡️ ConcreteClient
➡️ConcreteProxyTest
1️⃣5️⃣ 구체 클래스 기반 프록시 - 예제2
➡️ TimeProxy
TimeProxy프록시는 시간을 측정하는 부가 기능을 제공한다. 그리고 인터페이스가 아니라 클래스인ConcreteLogic를 상속 받아서 만든다.➡️ConcreateClient
1️⃣6️⃣ 구체 클래스 기반 프록시 - 적용
1️⃣7️⃣ 인터페이스 기반 프록시와 클래스 기반 프록시
All reactions