开发者社区 问答 正文

cglib执行有参动态代理报错?报错

今天想试试cglib的代理方法,方法是带有参数的

idea中报了这个错误:
Exception in thread "main" java.lang.IllegalArgumentException: Constructor not found

 

    //生成代理类,target是代理目标
    public <T>T createProxy(T target,Class[] args,Object[] argsValue){
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(target.getClass());
        enhancer.setCallback(this);
        return (T) enhancer.create(args,argsValue);
    }

    @Override
    public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy){
        Object result=null;
        System.out.println(method.getName());
        try {
            result =methodProxy.invokeSuper(o,objects);
        }catch (Exception e){
            System.out.println("error:"+method.getName()+"..");
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
        return result;
    }

 

展开
收起
爱吃鱼的程序员 2020-06-06 15:12:24 485 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>在当前类内调用本类会报错,在外部调用别的类就不报错。</p>
    
                    
    
                        <pre><code>methodProxy.invoke(o,objects);</code></pre>
                    
    
                        <p>报错是你传入的target对象找不到对应参数的构造方法,createProxy方法你是怎么调用的?target的class你又是怎么定义的?认真检查一下,如果找不到就把代码贴出来</p>
    
    2020-06-06 15:12:35
    赞同 展开评论
问答地址: