码迷,mamicode.com
首页 > 其他好文 > 详细

cglib动态代理

时间:2018-03-03 18:14:09      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:cti   getname   ...   rgs   动态代理   etc   xtend   dna   with   

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();

...

}

 

cglib动态代理

标签:cti   getname   ...   rgs   动态代理   etc   xtend   dna   with   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!