1. public class CglibProxy implements MethodInterceptor {
    2. @Override
    3. public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
    4. System.out.println("Cglib before");
    5. Object o1 = methodProxy.invokeSuper(o, objects);
    6. System.out.println("Cglib after");
    7. return o1;
    8. }
    9. public Object getProxy(Class clazz) {
    10. // 以下四句代码记住即可,反正就是创建代理类对象的方法,底层不要多在意
    11. Enhancer enhancer = new Enhancer();
    12. enhancer.setSuperclass(clazz);
    13. enhancer.setCallback(this);
    14. return enhancer.create();
    15. }
    16. }
    17. /**
    18. * 测试方法
    19. */
    20. public static void main(String[] args) {
    21. // SpringCglibProxy cglibProxy = new SpringCglibProxy();
    22. // PaySevice pay = (PaySevice) cglibProxy.getProxy(PaySevice.class);
    23. // pay.pay(1);
    24. System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, "./");
    25. // CglibProxyInf cglibProxy = new CglibProxyInf();
    26. // IOrderService pay = (IOrderService) cglibProxy.getProxy(IOrderService.class);
    27. // pay.doAdd(1);
    28. // pay.getAdd();
    29. CglibProxy cglibProxy = new CglibProxy();
    30. PaySevice pay = (PaySevice) cglibProxy.getProxy(PaySevice.class);
    31. pay.pay(1);
    32. // System.setProperty("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");
    33. // OrderService orderService = new OrderService();
    34. // JdkProxy proxy = new JdkProxy(orderService);
    35. // Class<?> clazz = orderService.getClass();
    36. // IOrderService service = (IOrderService) Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(), proxy);
    37. // service.doAdd(123456);
    38. }