静态代理
步骤一:创建抽象主题(接口)
步骤二:真实业务代码
步骤三:测试
JDK代理
步骤一:创建抽象主题(接口)
步骤二:真实业务代码
步骤三:测试
CGLIB代理
步骤一:代码层
步骤二:测试
public class ServiceCglib { public static void main(String[] args) { //步骤一:目标对象 final Cglib cglib=new Cglib(); //步骤二:生成代理 Enhancer enhancer=new Enhancer(); //步骤三:指定需要代理的目标对象木模板 enhancer.setSuperclass(cglib.getClass()); //步骤四:实现增强的处理操作 enhancer.setCallback(new MethodInterceptor() { /** * * @param o 目标对象 * @param method 目标方法 * @param objects 目标方法的参数 * @param methodProxy 代理目标对象的方法 * @return * @throws Throwable */ @Override public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { System.out.println("后置增强===========");
Object invoke = methodProxy.invoke(cglib, objects);
System.out.println("后置增强==========="); return invoke; } });
//最后一步:创建代理 Cglib o = (Cglib)enhancer.create(); o.Some(); } }