目标类UserServiceImpl:
package com.ant.jdk8.proxy; public class UserServiceImpl { public void deleteUser(){ System.out.println("删除用户"); } }
代理类CglibProxy:
package com.ant.jdk8.proxy; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; import java.lang.reflect.Method; public class CglibProxy implements MethodInterceptor { private Enhancer enhancer = new Enhancer(); public Object getProxy(Class clazz){ enhancer.setSuperclass(clazz); enhancer.setCallback(this); return enhancer.create(); } @Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { System.out.println("---开始事务---"); Object result = proxy.invokeSuper(obj,args); System.out.println("---提交事务---"); return result; } }
测试类App:
package com.ant.jdk8.proxy; public class App { public static void main(String[] args) { CglibProxy proxy = new CglibProxy(); UserServiceImpl userService = (UserServiceImpl)proxy.getProxy(UserServiceImpl.class); userService.deleteUser(); } }