我使用Spring的<aop:aspectj-autoproxy />
来代理一些JPA库接口。
然而,代理与下列故障Cannot subclass final class class $Proxy80
:
无法生成类[类$ Proxy80]的CGLIB子类:这个问题的常见原因包括使用final类或不可见的类; 嵌套的例外是java.lang.IllegalArgumentException异常:不能继承final类类$ Proxy80
由于错误,并快速谷歌,提示 - 当代理的目标是一个final类发生这种情况。 然而,在这条产业链,有没有课 - 只有接口。 春天在运行时产生所有的实现。
这里是一个的失败的接口的定义:
public interface AuthorDAO extends
CrossStoreJpaRepository<Author,Long>, CrossStoreQueryDslPredicateExecutor<Author> {
}
请注意我使用Spring的自定义子类JpaRepository和QueryDslPredicateExecutor ,定义如下:
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
}
我已经证实了它的这些@Aspect
由取出并重新运行该应用程序导致该问题的定义。
是什么原因造成这个错误? 这似乎是一个进行代理代理是失败的一些原因。