cglib动态代理

Model{

String name;

String age;

}

通过cglib动态代理 非接口的代理 获取model的field的值 判断值不能为null 或者不能为空字符串

MyCglibInterceptor extends MethodInterceptor{

String methodName;

@Overrde

public Object intercept(Object obj,Method method,Object[] args,MethodProxy mp){

System.out.print("xxx")

if(method.getname().startwith("get")){

methodname=method.getname()

}

return null

...

}

public Object getInstance(final Class<?> c){

final Enhancer en=new Enchancer()

en.setsuperclass(c)

en.setcallback(this)

return en.create()

}

}

Class main{

Class<?> c;

MyCglibInterceptor my=new MyCglibInterceptor()

T model =(T)my.getinstance(c)

Function<T,Object> fun=m->m.getName()

fun.apply(model)//cglib执行

my.getMethodName();

...

}

原文地址:https://www.cnblogs.com/cindy-zhu/p/8497162.html