invocationhandler4 스프링 핵심원리( 심화 ) - 프록시 팩토리 앞에서 JDK 동적 프록시와 CGLIB를 각각 살펴봤다.JDK 동적 프록시는 인터페이스가 있을 때 사용할 수 있고, CGLIB는 구체 클래스를 기반으로 프록시를 만들 수 있다는 점도 확인했다. 그런데 마지막에 다음과 같은 의문으로 글을 마무리 하였다. 인터페이스가 있으면 JDK 동적 프록시를 쓰고인터페이스가 없으면 CGLIB를 써야 하는데 이걸 개발자가 매번 직접 구분해서 적용해야 할까? 그리고 부가 기능을 넣기 위해서도JDK 동적 프록시에서는 InvocationHandlerCGLIB에서는 MethodInterceptor를 따로 만들어야 했다.게다가 앞에서 해봤던 것처럼 특정 조건에만 프록시 로직을 적용하는 기능까지 넣으려면 코드가 점점 번거로워진다. 위와 같은 번거로움과 문제점을 해결해주는 스프링이 지.. Spring/SpringCore - advance 2026. 3. 23. 스프링 핵심원리( 심화 ) - 동적 프록시( CGLIB ) 이전 글에서 살펴본 것처럼 JDK 동적 프록시는 인터페이스가 필수이다.따라서 인터페이스가 존재하는 경우에는 JDK 동적 프록시를 사용할 수 있지만,인터페이스 없이 구체 클래스만 존재하는 경우에는 같은 방식으로 프록시를 적용할 수 없다.이 문제를 해결하기 위해 사용할 수 있는 기술이 바로 CGLIB이다. CGLIB란?CGLIB(Code Generator Library) 는 바이트코드를 조작해서 동적으로 클래스를 생성하는 기술을 제공하는 라이브러리이다.JDK 동적 프록시는 인터페이스를 구현해서 프록시를 만들지만,CGLIB는 구체 클래스를 상속해서 프록시를 생성한다.즉, CGLIB를 사용하면 인터페이스가 없어도 구체 클래스만 가지고 동적 프록시를 만들어낼 수 있다.( 원래 CGLIB는 외부 라이브러리였지만, .. Spring/SpringCore - advance 2026. 3. 17. 스프링 핵심원리( 심화 ) - 동적 프록시(JDK 동적 프록시 2) 이전 글에서는 JDK 동적 프록시가 무엇인지, 그리고 InvocationHandler를 이용해 공통 로직을 동적으로 적용할 수 있다는 점을 정리했다. 이번에는 실제 애플리케이션에 JDK 동적 프록시를 적용해보자.다만 JDK 동적 프록시는 인터페이스 기반으로 동작하기 때문에, 인터페이스가 존재하는 V1 애플리케이션에만 적용할 수 있다. JDK 동적 프록시 - 적용1먼저 LogTrace를 적용할 수 있는 InvocationHandler 구현체를 만들어보자.LogTraceBasicHandlerpackage hello.proxy.config.v2_dynamicproxy.handler;import hello.proxy.trace.TraceStatus;import hello.proxy.trace.logtrace.L.. Spring/SpringCore - advance 2026. 3. 17. 스프링 핵심원리( 심화 ) - 동적 프록시(JDK 동적 프록시 1) JDK 동적 프록시 및 CGLIB 기술을 활용하여, 프록시 기술을 적용하는 방법에 대해서 학습한 내용을 정리해보겠다. 지금부터 다루는 내용에 대해서 정리하자면, 프록시가 필요한 대상마다 직접적으로 각각의 프록시 클래스를 만드는 것이 아닌 하나의 프록시 객체를 통해 적용 대상에 필요한 부가적인기능을 일괄적으로 적용하는 것이다. JDK 동적 프록시 및 CGLIB 기술에 대해서 이해해보자. JDK 동적 프록시 JDK 동적 프록시는 JAVA가 기본적으로 제공해주는 기능이다.Interface를 기반에 두고 동적으로 프록시 객체를 런타임에 생성하며 필요한 실행 로직을 수행해주는 기술이다.( JDK 동적 프록시 기술을 사용하여면, Interface가 필수이다. ) 기본 예제 JDK 동적 프록시를 적용하기 위.. Spring/SpringCore - advance 2026. 3. 15. 이전 1 다음