类似以下的spring错误信息:
org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class $Proxy145]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class class $Proxy145
解决问题的检查点:
1、需要AOP拦截的类是否是final的,final类不可使用CGLIB来代理。
2、是否在给BEAN配AOP的时候强制使用CGLIB,如果是则可指定proxyTargetClass属性以让spring强制代理目标类。
3、类是否被多次代理了,如果类被多次代理过,则第二次进行代理的时候拿到的是第一次代理后的对象,这个对象是个final形式的,所以会出现这个错误。
基于第三点要注意,类是否被多次代码不紧紧取决于类是否被配置了多次AOP,如果类实现了某个接口,则还要看类实现的接口是否被aop拦截过。如果类实现了接口且接口也被AOP拦截了,则很可能出现上面的错误(是否出错取决于AOP代理执行的顺序)。
相关推荐
JMOCK final class mockJMOCK final class mockJMOCK final class mockJMOCK final class mockJMOCK final class mock
Allegro-Class(类)SubClass(子类)层功能介绍 Allegro-Class(类)SubClass(子类)层功能是 Allegro 工具中的一个重要概念,在 PCB 设计中扮演着关键角色。Class(类)代表设计中所有可见项目的类型,每个类中...
该信息被包含在三个字节中,分别是 Base Class、SubClass 和 Protocol。这些信息可以被存储在设备描述符(Device Descriptor)和接口描述符(Interface Descriptors)中。 Base Class 是设备类型的基本分类,每个 ...
public class SubClass extends BaseClass { // 编译错误:不能重写final方法 // @Override // public void finalizeMethod() { // System.out.println("Trying to override"); // } } ``` 再次,`final`可以...
ShardingSphere于2020年4月16日成为Apache顶级基金项目,现有三部分,ShardingSphere-JDBC、ShardingSphere-Proxy、ShardingSphere-Sidecar。 引包 <groupId>org.apache.shardingsphere <artifactId>...
public class SubClass extends BaseClass { // 不能重写cannotOverride方法 // @Override // public void cannotOverride() { // // 方法实现 // } } ``` 三、final修饰类 当类被final修饰时,意味着这个类...
class SubClass extends SuperClass { constructor(param) { super(param); // 子类的其他初始化操作 } } ``` 4. **静态方法(Static Methods)** 使用`static`关键字可以定义类的静态方法,它们不绑定到类...
class Subclass(Superclass): def __init__(self): super().__init__() ``` 在这个例子中,`Subclass` 是 `Superclass` 的子类,它继承了 `Superclass` 的所有公共属性和方法。 接下来,"Instance of Subclass" ...
Create two suclasses for individual automobile makers (for example, Ford and Chevy) and include appropriate setPrice() methods in each subclass. Finally, write a program that uses the Auto class and ...
在编程领域,子类(SubClass)和子类扩展(SubClassEx)是面向对象编程中的关键概念。这些术语通常与继承相关,继承是面向对象编程的三大特性之一(另外两个是封装和多态)。在这个示例中,我们看到的是如何创建和...
Hibernate提供了多种策略来处理这种情况,如单表策略(Single Table),联合实体策略( Joined Subclass)以及我们这里关注的表-per-class策略。每种策略都有其优点和适用场景。 1. **表-per-class策略**:在这种...
subclass.exe 子类
function Class:extend(subclass) subclass.__index = subclass subclass.__super = self return subclass end return Class ``` 在这个例子中,`Class:new`是构造函数,用来创建新的实例。`setmetatable`用于...
本文将深入探讨Hibernate ORM中的一个特定概念——继承关联关系的“union-subclass”策略。这个策略涉及到如何在面向对象的设计中处理类的继承关系,并将其映射到数据库中。 首先,我们来理解继承关联关系。在面向...
C++ x86 x64 类内类外子类化 C++ x86 x64 类内类外子类化 C++ x86 x64 类内类外子类化 C++ x86 x64 类内类外子类化
class SubClass extends SuperClass { int x; SubClass() { super(); // 调用父类的构造方法 x = 5; // super()必须是子类构造器的第一条语句 System.out.println("in SubClass :x=" + x); } void ...
This code demonstrates how to write a subclassing control in Visual Basic(version 5 or later). The code takes advantage of the new AddressOfkeyword, which can only be used from a BAS module....
class SubClass extends FinalClass {} // 会抛出错误 class ParentClass { final public function finalMethod() {} } class ChildClass extends ParentClass { public function finalMethod() {} // 会抛出...
public class Subclass extends Superclass { // ... } ``` 类层次结构是通过继承构建的一系列类的关系树。这有助于减少代码冗余,将共同的代码抽取到父类中。例如,我们可以有一个`Balloon`类作为基础,然后创建`...