Tôi đang sử dụng số <aop:aspectj-autoproxy />
của Spring để ủy quyền một số giao diện JPA repository.Spring AspectJ không thành công khi giao diện proxy kép: Không thể tạo lớp con CGLIB của lớp
Tuy nhiên, các proxy là không với Cannot subclass final class class $Proxy80
sau:
Không thể tạo cglib lớp con của lớp [lớp $ Proxy80]: Sở hữu chung nguyên nhân của vấn đề này bao gồm sử dụng một lớp cuối cùng hoặc một tổ chức phi có thể nhìn thấy lớp học; lồng nhau ngoại lệ là java.lang.IllegalArgumentException: Không thể lớp lớp lớp cuối cùng $ Proxy80
Khi lỗi, và một google nhanh chóng, cho thấy - điều này xảy ra khi các mục tiêu proxy là một lớp học chính thức. Tuy nhiên, trong chuỗi này, không có các lớp - chỉ các giao diện. Mùa xuân tạo ra tất cả các triển khai trong thời gian chạy.
Đây là định nghĩa của giao diện đó là thất bại:
public interface AuthorDAO extends
CrossStoreJpaRepository<Author,Long>, CrossStoreQueryDslPredicateExecutor<Author> {
}
Note Tôi đang sử dụng một lớp con tùy chỉnh của mùa xuân của JpaRepository và QueryDslPredicateExecutor, được xác định như sau:
public interface CrossStoreJpaRepository<T, ID extends Serializable> extends JpaRepository<T, ID> {}
public interface CrossStoreQueryDslPredicateExecutor<T> extends QueryDslPredicateExecutor<T>{}
Ở những nơi khác, tôi xác định tùy chỉnh các khía cạnh cho các phương pháp trên các giao diện này:
@Aspect
@Component
public class DocumentLoadingAspect extends AbstractDocumentAspect {
@Around("execution(* com.mangofactory.crossstore.repository.CrossStore*.find*(..))")
public Object loadCrossStoreEntity(ProceedingJoinPoint pjp) throws Throwable
{
// implementation omitted
}
Tôi đã xác nhận rằng đó là những định nghĩa @Aspect
đang gây ra sự cố bằng cách xóa chúng và chạy lại ứng dụng.
Điều gì gây ra lỗi này? Dường như proxy proxy bị lỗi vì một số lý do.
Bạn có tìm thấy giải pháp cho việc này không? Tôi gặp lỗi tương tự khi trên giao diện Cổng kết nối. – Ocelot