cglib动态代理
依赖
<dependency><groupId>cglib</groupId><artifactId>cglib-nodep</artifactId><version>3.2.4</version></dependency>
代理类
package com.test.cglibProxy;import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;import java.lang.reflect.Method;
import java.util.Date;
public class CglibProxy implements MethodInterceptor {Enhancer enhancer=new Enhancer();public Object getProxy(Class clazz){enhancer.setSuperclass(clazz);enhancer.setCallback(this);return enhancer.create();}@Overridepublic Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {System.out.println("方法执行前:"+new Date());Object result= methodProxy.invokeSuper(o,objects);System.out.println("方法执行后:"+new Date());return result;}
}
目标类
package com.test.cglibProxy;
public class UsersService {public void insert() {System.out.println("添加用户");}
}
测试
package com.test.cglibProxy;import org.junit.Test;public class TestCglibProxy {@Testpublic void test(){CglibProxy cglibProxy=new CglibProxy();UsersService usersServiceProxy=(UsersService)cglibProxy.getProxy(UsersService.class);usersServiceProxy.insert();}
}