CGLIB를 이용한 프록시 객체 사용하기
1. 소스 다운 로드
- cglib-2.1_3.jar - ASM 모듈을 필요로 하는 버전
- cglib-nodep-2.1_3.jar - ASM 모듈이 포함되어 있는 버전
2. CGLIB를 사용하여 프록시를 생성할 때에는 크게 크게 두가지 작업을 필요함
- net.sf.cglib.proxy.Enhancer 클래스를 사용하여 원하는 프록시 객체 들고
- net.sf.cglib.proxy.Callback을 사용하여 프록시 객체 조작 등 두가지 방법으로 프록시 생성함
3. MethodInterceptor를 사용하여 프록시 객체 처리
- CGLIB가 제공하는 Callback 중 가장 많이 사용되는 것은 net.sf.cglib.proxy.MethodInterceptor임
- Enhancer.setCallback()을 통해서 MethodInterceptor를 지정하면, 프록시의 메소드를 호출할 때 마다 MethodInterceptor.intercept() 메소드가 호출되고 MethodInterceptor는 프록시와 원본 객체 사이에 위치하여 메소드 호출을 조작할 수 있도록 해 줌
*. 샘플 소스
*. 실행결과
- public void MyClass.method()
- MyClass.method()
- public void MyClass.method2()
- MyClass.method2()
4. CallbackFilter를 사용하여 알맞은 Callback 실행
여러개의 Callback 중에서 상황에 따라서 원하는 Callback을 사용하고 싶은 경우 net.sf.cglib.proxy.CallbackFilter 인터페이스를 사용함
* 샘플소스
*. 실행 결과
- public void MyClass.method()
- MyClass.method()
- MyClass.method2()
5. Mixin
Proxy & Interceptor
*. 샘플 소스
*. 실행 결과
- MyInterfaceAImpl.methodA()
- MyInterfaceBImpl.methodB()








