Could not generate CGLIB subclass of class[class X

Spring AOP 配置需要注意的问题,CGLIB

在生成aop代理类的时候,报错: Could not generate CGLIB subclass of class [class XXXX]: Common causes of this problem include using a final class or a non-visible class;

后经过检查,  原来在spring启动aop的配置里面是这样写的

1 <aop:aspectj-autoproxy proxy-target-class="true"/>

2<tx:annotation-driven proxy-target-class="true" transaction-manager="txManager" />
这样的情况,Spring是采用CGLIB去代理,而采用此方式代理,是不可以面向接口编程的,也就是说要代理的类不可以实现接口,而且要想正常使用貌似还要加上一个默认构造函数.

所以,解决这个问题,用Spring默认的代理方式就可以了,配置改成

1 <aop:aspectj-autoproxy/>

2<tx:annotation-driven  transaction-manager="txManager" />

就OK了.

时间: 2024-10-10 20:11:37

Could not generate CGLIB subclass of class[class X的相关文章

《Spring设计思想》AOP实现原理(基于JDK和基于CGLIB)

0.前言 在上篇文章<Spring设计思想>AOP设计基本原理中阐述了Spring AOP 的基本原理以及基本机制,本文将深入源码,详细阐述整个Spring AOP实现的整个过程. 读完本文,你将了解到: 1.Spring内部创建代理对象的过程 2.Spring AOP的核心---ProxyFactoryBean 3.基于JDK面向接口的动态代理JdkDynamicAopProxy生成代理对象 4.基于Cglib子类继承方式的动态代理CglibAopProxy生成代理对象 5.各种Advice

Cannot subclass final class class com.sun.proxy.$Proxy

背景 这个错误是我在使用AOP动态切换数据库,实现数据库的读写分离的时候出现的问题,使用到的系统环境是: <spring.version>3.2.6.RELEASE</spring.version> <mybatis.version>3.2.4</mybatis.version> <mybatis-spring.version>1.1.1</mybatis-spring.version> 使用的代码 执行切点的代码是: package

Spring aop Cannot subclass final class class com.sun.proxy

nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bean': Post-processing of the FactoryBean's object failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not

springaop问题——Cannot subclass final class org.springframework.boot.autoconfigure.AutoConfigurationPackages$BasePackages

问题描述: 在使用springaop对目标对象增强时,若切点的条件过于宽泛就会出现以下异常! 如: @Before("execution(* *(..))") @Before("args(..)") @Before("within(org..*)") ... org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.spr

spring源码分析(一)IoC、DI

创建日期:2016.08.06 修改日期:2016.08.07 - 2016.08.12 交流QQ:992591601 参考书籍:<spring源码深度解析>.<spring技术内幕> 参考文章:http://www.cnblogs.com/xing901022/p/4178963.html http://www.myexception.cn/program/1031276.html http://blog.csdn.net/qian_348840260/article/detai

Spring核心框架 - AOP的原理及源码解析

一.AOP的体系结构 如下图所示:(引自AOP联盟) 层次3语言和开发环境:基础是指待增加对象或者目标对象:切面通常包括对于基础的增加应用:配置是指AOP体系中提供的配置环境或者编织配置,通过该配置AOP将基础和切面结合起来,从而完成切面对目标对象的编织实现. 层次2面向方面系统:配置模型,逻辑配置和AOP模型是为上策的语言和开发环境提供支持的,主要功能是将需要增强的目标对象.切面和配置使用AOP的API转换.抽象.封装成面向方面中的逻辑模型. 层次1底层编织实现模块:主要是将面向方面系统抽象封

Spring IoC源码解析——Bean的创建和初始化

Spring介绍 Spring(http://spring.io/)是一个轻量级的Java 开发框架,同时也是轻量级的IoC和AOP的容器框架,主要是针对JavaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,MyBatis框架等组合使用. IoC介绍 IoC是什么 Ioc-Inversion of Control,即"控制反转",不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控

AOP技术应用和研究--SpringAop实现原理

Spring 的AOP实现遵守了AOP联盟的约定.同时 Spring 又扩展了它,增加了如 Pointcut.Advisor 等一些接口使得更加灵活.在Spring的AOP模块中,包括AOP的基本概念,通知,切入点等,以及最核心的AopProxy代理对象生成和Spring AOP拦截器调用的实现. 1,Spring Aop的基本概念 我们在前面 AOP基本概念对AOP基本概念进行了理论上的定义,现在我们将Spring AOP基本概念作为例子来说明AOP的基本概念,这样可以更好的理解AOP基本概念

spring aop(四)

直接找到解析aop标签的方法: 1 protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) { 2 if (delegate.isDefaultNamespace(root)) { 3 NodeList nl = root.getChildNodes(); 4 for (int i = 0; i < nl.getLength(); i++) { 5 Node node = n