Java 当双代理接口:无法生成类的CGLIB子类时,Spring AspectJ失败
我正在使用Spring的Java 当双代理接口:无法生成类的CGLIB子类时,Spring AspectJ失败,java,spring,aspectj,Java,Spring,Aspectj,我正在使用Spring的接口 但是,代理失败,因为以下无法将最终类$Proxy80子类化: 无法生成类[class$Proxy80]:Common的CGLIB子类 此问题的原因包括使用最终类或不可见类 阶级;嵌套异常为java.lang.IllegalArgumentException:无法 子类最终类$Proxy80 正如错误和快速的google所表明的,当代理目标是最终类时,就会发生这种情况。然而,在这个链中,没有类,只有接口。Spring在运行时生成所有实现 以下是失败接口的定义: pub
接口
但是,代理失败,因为以下无法将最终类$Proxy80子类化:
无法生成类[class$Proxy80]:Common的CGLIB子类
此问题的原因包括使用最终类或不可见类
阶级;嵌套异常为java.lang.IllegalArgumentException:无法
子类最终类$Proxy80
正如错误和快速的google所表明的,当代理目标是最终类时,就会发生这种情况。然而,在这个链中,没有类,只有接口。Spring在运行时生成所有实现
以下是失败接口的定义:
public interface AuthorDAO extends
CrossStoreJpaRepository<Author,Long>, CrossStoreQueryDslPredicateExecutor<Author> {
}
我已经确认,正是这些@Aspect
定义通过删除它们并重新运行应用程序而导致了问题
是什么导致了这个错误?代理代理似乎是由于某种原因而失败的。我的猜测是Spring data JPA将repo实现创建为一个Java代理,它是最终的,然后
尝试使用cglib子类化为每个方面创建另一个代理,这是行不通的。在autoproxy元素上是否将代理目标类设置为true
?找到解决方案了吗?在Integration Gateway接口上出现相同的错误。
public interface CrossStoreJpaRepository<T, ID extends Serializable> extends JpaRepository<T, ID> {}
public interface CrossStoreQueryDslPredicateExecutor<T> extends QueryDslPredicateExecutor<T>{}
@Aspect
@Component
public class DocumentLoadingAspect extends AbstractDocumentAspect {
@Around("execution(* com.mangofactory.crossstore.repository.CrossStore*.find*(..))")
public Object loadCrossStoreEntity(ProceedingJoinPoint pjp) throws Throwable
{
// implementation omitted
}