CGLIB Sample

It's very simple sample for CGLib Proxy being used by Spring.


1
2
3
4
5
6
7
8
9
public static void main(String[] args) {
    Enhancer enhancer = new Enhancer();
    // enhancer.setSuperclass(MemberServiceImpl.class);
    enhancer.setSuperclass(MemberService.class);
    enhancer.setCallback(new MethodCallLogInterceptor());
    Object obj = enhancer.create();
    MemberService memberService = (MemberService)obj;
    memberService.regist(new Member());
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MethodCallLogInterceptor implements MethodInterceptor {
     
    MemberService memberService = new MemberServiceImpl();
     
    public Object intercept(Object object, Method method, Object[] args,
            MethodProxy methodProxy) throws Throwable {
        System.out.println("before ");
         
        // Object returnValue = methodProxy.invokeSuper(memberService, args);
        Object returnValue = method.invoke(memberService, args);
         
        System.out.println("after ");
        return returnValue;
    }
}



cglib.zip


Refer : http://javacan.tistory.com/entry/114