728x90
반응형

proxy 3

[Spring] CGLIB: Code Generator Library

CGLIB 바이트코드를 조작해서 동적으로 클래스를 생성하는 기술을 제공하는 라이브러리입니다. CGLIB을 사용하면 인터페이스가 없어도 구체 클래스만 가지고 동적 프록시를 만들 수 있습니다. CGLIB은 외부 라이브러리로, 스프링 프레임워크 내부 소스 코드에 포함되어 있기 때문에 스프링을 사용한다면 라이브러리 추가 없이 사용할 수 있습니다. CGLIB 구현 NonInteferfaceService 인터페이스가 없는 구현체 서비스를 만들었습니다. @Slf4j public class NonInterfaceService { public void call() { log.info("NonInterfaceService call"); } } ExecuteTimeMethodInterceptor CGLIB을 사용하기 위해 ..

Spring 2022.08.24

[Java] JDK 동적 프록시

JDK 동적 프록시 프록시는 타겟 코드의 수정없이 접근제어, 부가기능을 추가하기 위해 주로 사용됩니다. 하지만, 프록시를 사용하기 위해서는 대상 클래스 만큼 프록시 클래스를 만들어줘야하기 때문에 코드 중복이 발생한다는 단점이 있습니다. 이를 해결할 수 있는 기술이 동적 프록시 기술입니다. 동적 프록시 기술은 개발자가 직접 프록시 클래스를 만들지 않아도 되고, 런타임에 개발자 대신 동적으로 객체를 생성해줍니다. 또한 동적 프록시에 원하는 로직을 지정할 수도 있습니다. JDK 동적 프록시 구현 JdkDynamicProxyInterface public interface JdkDynamicProxyInterface { String call(); } JdkDynamicProxyImpl @Slf4j public c..

JAVA 2022.08.24

[Java] Proxy Pattern

Proxy Pattern 대리인 이라는 뜻으로, 대신해서 처리하는 것을 말합니다. Proxy Class를 통해서 대신 전달하는 형태로 설계되며, 실제 Client는 Proxy로 부터 결과를 받습니다. 또한 Cache의 기능으로도 활용이 가능합니다. OCP와 DIP를 따릅니다. Proxy Pattern 으로 캐싱 구현 [Browser interface] package Java.proxy; public interface Browser { HTML show(); } [Chrome class] package Java.proxy; public class Chrome implements Browser{ private String url; public Chrome(String url) { this.url = url;..

JAVA 2022.07.31
728x90
반응형