cglib实现动态代理构建带参数的代理实例
发布时间:2020-05-25 14:03:31 所属栏目:Java 来源:互联网
导读:cglib实现动态代理构建带参数的代理实例
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 cglib实现动态代理构建带参数的代理实例:
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
/**
* Created by Carl on 14-12-30.
*/
public class CglibProxy implements MethodInterceptor{
/**
* 创建代理对象方法
*
* @param target 代理对象
* @param args 对应的构造器参数类型
*
* 例:有构造器如下
* public Person(name,age){...} name为String.class age为int.class
* 写入name的类型与age的类型
*
* 则:new Class[]{String.class,int.class}
*
* @param argsValue 对应的构造器参数值
*
* 例:如此创建对象 new Person("name",23) 用以下方式传入:new Object[]{"name",23}
*
* @param <T> <泛型方法>
* @return 返回跟代理对象类型
*/
public <T> T getInstance(T target,Class[] args,Object[] argsValue){
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(target.getClass());
enhancer.setCallback(this);
return (T) enhancer.create(args,argsValue);
}
/**
* 创建代理对象方法
*
* @param target 代理对象
* @param <T> <泛型方法>
* @return 返回跟代理对象类型
*/
public <T> T getInstance(T target){
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(target.getClass());
enhancer.setCallback(this);
return (T) enhancer.create();
}
@Override
public Object intercept(Object o,Method method,Object[] objects,MethodProxy methodProxy) throws Throwable {
Object result = null;
try{
System.out.println("Before "+method.getName()+" ..");
result = methodProxy.invokeSuper(o,objects);
System.out.println("End "+method.getName()+" ..");
}catch(Exception e){
System.out.println("Errod "+method.getName()+" ..");
}
return result;
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 详解Spring加载Properties配置文件的四种方式
- Spring boot + mybatis + Vue.js + ElementUI 实现数据的增
- 如何使用SAX XML Schema Validator的验证消息进行内部化?
- Perforce挂起的更改列表差异脚本
- 8种常见的Java不规范代码
- .net – [Bind(Exclude =“AlbumId”)]注释在数据验证中的作
- java – 用于j2me“回合制”游戏的Gameloop
- java – 我想在我的桌面应用程序中使用Google Map API
- java – 如何终止Matcher.find(),当它运行太长时间?
- java – 在JPanel的任何地方检测鼠标进入/退出事件
