Tôi đang gặp một số vấn đề khi cấu hình Spring được áp dụng theo thứ tự mong muốn với Spring Boot trong một dự án Maven đa module.Spring Boot AutoConfiguration Order
Tôi có các mô-đun A và B do tôi viết và phụ thuộc vào mô-đun bên thứ ba mà tôi không kiểm soát trong mô-đun C (phụ thuộc như sau: A phụ thuộc vào C, B tùy thuộc vào A)
Trong mô-đun AI có một lớp được chú thích với @Configuration
và cũng là @AutoConfigureBefore(ClassFromModuleD.class)
. Trong mô đun BI có một lớp khác được chú thích với @Configuration
và cũng là @AutoConfigureBefore(ClassFromModuleA.class)
Tôi hy vọng điều này sẽ dẫn đến định nghĩa bean trong mô-đun B của tôi được định cấu hình đầu tiên, tiếp theo là các hạt trong mô-đun của tôi
Tôi cũng đã thử thêm tệp META-INF/spring.factories
vào cả mô-đun A và B khai báo tệp cấu hình duy nhất có trong mô-đun riêng của nó. Ví dụ. cho module A
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.exmaple.moduleAConfiguration
và trong mô-đun B:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.exmaple.moduleBConfiguration
Tôi không nhìn thấy thứ tự mong muốn cấu hình, trên thực tế, nó có vẻ là hoàn toàn trái ngược với những gì tôi muốn . Tôi đã sử dụng báo cáo ghi nhật ký và trình gỡ lỗi để xem qua và có vẻ như cấu hình từ Mô-đun C được áp dụng trước, sau đó là A rồi cuối cùng B.
Có thể chỉ ra những gì tôi có thể đã bỏ lỡ hoặc nếu có cách khác làm cái này? Cảm ơn rất nhiều trước.
bạn có thể chỉ cho lớp cấu hình chính của bạn? Bạn có ý nghĩa gì bởi "cấu hình" (làm thế nào để bạn biết rằng một điều đến trước một lúc euntime)? –
Lớp cấu hình chính trông như thế này: '@EnableReactor @SpringBootApplication public class SpringConfiguration {} ' Tôi tin rằng thứ tự không phải là những gì tôi mong muốn bởi vì tôi đã đặt breakpoint trong các phương pháp định nghĩa bean khác nhau và chúng không bị tấn công theo thứ tự mà tôi hy vọng. Vấn đề là, một bean trong mô-đun C cố gắng tra cứu một bean trong ngữ cảnh không có sẵn bởi vì nó được cấu hình bởi các mô-đun A và B chưa được cấu hình tự động ... Nếu tôi duyệt qua mã chạy module C và sau đó một thời gian sau đó các bean được cấu hình (quá muộn)! –
Chú thích 'AutoconfigureBefore/After' chỉ áp dụng cho thứ tự các lớp được nhập vào nhà máy đậu. Họ không nói bất cứ điều gì về thứ tự mà đậu được tạo ra để điểm break của bạn không thực sự giúp đỡ để hiểu được vấn đề. Nếu một bean không thể được tạo ra phải có một lỗi và một dấu vết stack, vì vậy có lẽ nó sẽ giúp đỡ để đăng những người? –