Khi bạn bắt đầu rối tung xung quanh với các công cụ tự động-proxy Spring, bạn thường chạy vào hành vi này như tài liệu:Theo dõi xuống nguyên nhân của của mùa xuân "không đủ điều kiện để tự động proxy"
lớp mà thực hiện giao diện BeanPostProcessor là đặc biệt và do đó chúng được xử lý theo cách khác nhau bởi vùng chứa. Tất cả BeanPostProcessors và trực tiếp đậu tham chiếu của họ sẽ được khởi tạo khi khởi động, như là một phần của giai đoạn khởi động đặc biệt của ApplicationContext, sau đó tất cả những BeanPostProcessors sẽ được đăng ký một cách sắp xếp - và áp dụng cho tất cả đậu thêm . Kể từ AOP tự động proxy được thực hiện như một BeanPostProcessor chính nó, không BeanPostProcessors hoặc trực tiếp đậu tham chiếu có đủ điều kiện cho tự động proxy (và do đó sẽ không có khía cạnh 'dệt' vào chúng.
Đối với bất kỳ ví dụ đậu, bạn sẽ thấy một thông báo đăng nhập thông tin: “Bean 'foo' là không đủ điều kiện cho việc xử lý bởi tất cả BeanPostProcessors (ví dụ: không đủ điều kiện để tự động proxy)”.
Nói cách khác, nếu tôi viết BeanPostProcessor của riêng mình, và lớp đó tham chiếu trực tiếp các bean khác trong ngữ cảnh, thì những bean được tham chiếu đó sẽ không đủ điều kiện để tự động proxy, và một thông báo được ghi vào hiệu ứng đó. Vấn đề của tôi là theo dõi nơi mà tham chiếu trực tiếp có thể rất khó khăn, vì "tham chiếu trực tiếp" có thể thực tế là một chuỗi phụ thuộc chuyển tiếp kết thúc bằng một nửa số hạt trong ngữ cảnh ứng dụng. Tất cả mùa xuân cung cấp cho bạn là thông điệp thông tin duy nhất, và nó không thực sự giúp đỡ nhiều, vượt ra ngoài nói với bạn khi một hạt đậu đã bị bắt trong trang web của tài liệu tham khảo.
Trình xử lý BeanPostProcessor mà tôi đang phát triển không có tham chiếu trực tiếp đến các hạt khác, nhưng đó là một tập hợp các tham chiếu rất hạn chế. Mặc dù vậy, khá nhiều mỗi hạt trong bối cảnh của tôi sau đó bị loại trừ khỏi việc tự động được ủy quyền, theo các thông điệp tường trình, nhưng tôi không thể nhìn thấy sự phụ thuộc đó đang xảy ra ở đâu.
Có ai tìm thấy cách tốt hơn để theo dõi việc này không?
Bạn cũng có thể nhận được thông báo thông tin đó cho các lớp 'PersistenceExceptionTranslator'. – Raedwald