当我在自定义代理类是陷入了死循环
//设置绑定关系
public Object newProxyInstance(Object targetObject) {
this.targetObject = targetObject;
Enhancer enhancer = new Enhancer();
//设置代理类的父类(目标类)
enhancer.setSuperclass(this.targetObject.getClass());
//设置回调函数
enhancer.setCallback(this);
//创建子类(代理类)
return enhancer.create();
}
@Override
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
Object result = null;
try {
System.out.println("通过Cglib动态代理" + method.getName() + "打印日志 begin");
result = method.invoke(o, objects);
System.out.println("通过Cglib动态代理" + method.getName() + "打印日志 end");
} catch (Throwable e) {
e.printStackTrace();
}
return result;
}
假设现在你有个a方法,生成代理对象后,调用代理对象的a方法,此时进入拦截类里面,然后你又通过反射去调用代理类的a方法,套娃形成,
你不是自己丢进来targetObject了嘛,o换成targetObject,就不套娃了