`

Cannot proxy target class because CGLIB2 is not available

阅读更多
Cannot proxy target class because CGLIB2 is not available y: org.springframework.aop.framework.AopConfigException: Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces.
at org.springframework.aop.framework.DefaultAopProxyFactory.createAopProxy(DefaultAopProxyFactory.java:67)
at org.springframework.aop.framework.ProxyCreatorSupport.createAopProxy(ProxyCreatorSupport.java:106)
at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:490)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:365)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:325)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:361)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1344)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
... 38 more



解决方法:
1.缺少CGlib,把CGLIB Jar包放入项目就可以了.
2. 没有实现任何接口的时候也会报这个错误!
注:cglib不包含asm,cglib-nodep包含了asm,而asm是cglib必须的三方类库,出现两个版本的原因恐怕是要避免框架集成时的版本冲突吧。
======================================================================
Cannot convert value of type [$Proxy0 implementing org.springframework.beans.factory.InitializingBean,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [dao.UserDaoImp] for property 'userDao': no matching editors or conversion strategy found
就异常显示的信息可以看到,Spring在转换时,主要是将代理类转换成接口,而不能转换成实际类。
解决办法:
1.如果在Spring配置文件中配置的事务是通过AOP标签实现的,那就在<aop:config />中增加proxy-target-class="true"属性。
2.使实际的类实现某个接口(UserDaoImp实现UserDao接口)
分享到:
评论

相关推荐

    CGLIB2 is not available&org.objectweb.asm.Type

    关于Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces.和 java.lang.ClassNotFoundException: org.objectweb.asm.Type错误的解决方法: 就是...

    cglib-nodep

    org.springframework.aop.framework.AopConfigException: Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces 从异常信息可以看出是cglib的问题...

    Nginx反向代理proxy_cache_path directive is not allowed错误解决方法

    nginx: [emerg] “proxy_cache_path” directive is not allowed here in /etc/nginx/conf.d/default.conf:29 提示意思“proxy_cache_path指令不被允许”,在官网上查找了相关说明,也没有发现问题,最后看应用范围...

    Java动态代理Proxy和cglib

    System.out.println("Doing something in the target class"); } } class MyMethodInterceptor implements MethodInterceptor { @Override public Object intercept(Object obj, Method method, Object[] args,...

    输出JDK和CGLib动态代理产生的class文件.zip

    - target/classes:编译后的class文件,包括目标接口和实现类的class文件,以及由Proxy生成的代理类class文件 - 测试代码:展示如何使用Proxy创建代理对象并调用方法 2. CGLib代理项目: - src/main/java:包含...

    简单模拟spring cglib代理

    TargetClass proxyInstance = (TargetClass) enhancer.create(); // 调用代理对象的方法 proxyInstance.targetMethod(); } } class TargetClass { public void targetMethod() { System.out.println("Target ...

    使用JDK中的Proxy技术实现AOP功能与使用CGLIB实现AOP功能

    总的来说,JDK的Proxy适用于实现了接口的目标对象,而CGLIB则适用于未实现接口的对象。两者都可以帮助我们在不修改原有代码的情况下,通过代理对象在调用方法前后插入额外的逻辑,实现AOP的功能。在Spring框架中,这...

    Spring如何基于Proxy及cglib实现动态代理

    HelloInterface target2 = (HelloInterface) Proxy.newProxyInstance( Demo.class.getClassLoader(), new Class[]{HelloInterface.class}, invocationHandler); target2.sayHello(); ``` 当调用`target2....

    cglib2.2jar包

    2. **配置**:在Spring框架中,如果需要使用CGLIB进行AOP代理,需要在配置文件中启用CGLIB代理,例如在XML配置中添加 `&lt;aop:aspectj-autoproxy/&gt;` 或者在Java配置中使用 `@EnableAspectJAutoProxy(proxyTargetClass ...

    JAVA JDK静态代理、动态代理、CGlib代理的代码演示

    class ServiceProxy implements Service { private Service target; public ServiceProxy(Service target) { this.target = target; } @Override public void doSomething() { before(); target....

    cglib动态生成java类

    2. **无需接口**:CGLib可以对没有实现接口的类进行代理,这是Java动态代理(JDK Proxy)无法做到的。 3. **广泛支持**:许多知名框架如Spring AOP、Hibernate等都使用了CGLib作为底层的动态代理技术。 ### 应用...

    Cglib的jar文件 Cglib.zip

    System.out.println("Target method is executed."); } } } ``` 在这个例子中,`MyTargetClass`是我们要代理的类,通过`Enhancer`我们创建了一个它的子类并设置了一个拦截器。当我们通过代理对象调用`...

    java动态代理实例(jdk动态代理和cglib)

    2. **创建Enhancer对象**:CGLIB的`net.sf.cglib.proxy.Enhancer`类是用于生成代理对象的核心工具。 3. **设置回调**:通过`setCallback()`或`setCallbacks()`方法,我们可以设置代理的回调策略,这类似于JDK动态...

    简单实现Cglib子类代理

    2. **Cglib基本使用步骤**: - 引入Cglib依赖:在项目中引入Cglib相关的jar包,通常通过Maven或Gradle管理。 - 创建Enhancer实例:Enhancer是Cglib的核心类,它负责生成代理对象。 - 设置被代理的目标对象:通过...

    JDK动态代理和CGLIB代理

    JDK动态代理和CGLIB代理是两种常用的实现方式。 首先,我们来看看JDK动态代理。JDK动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。Proxy类用于创建一个代理对象...

    java cglib和反射demo

    Java中的CGLib与反射是两种常用的动态代理技术,它们在实现面向切面编程(AOP)时发挥着重要作用。本文将深入探讨这两种技术,并通过一个简单的AOP demo来阐述它们的使用方法。 首先,让我们了解什么是CGLib。CGLib...

    cglib-2.2.rar

    5. **Proxy**:CGLib也提供了一套与JDK的java.lang.reflect.Proxy类似的API,方便开发者使用。 在实际应用中,CGLib不仅用于动态代理,还可以用于性能优化、日志记录、测试、内存数据库等场景。例如,在单元测试中...

Global site tag (gtag.js) - Google Analytics