Mam problem z uzyskaniem konfiguracji Spring, która zostanie zastosowana w pożądanej kolejności przy Spring Boot w wielomodułowym projekcie Maven.Spring Boot AutoConfiguration Order
Mam modułów A i B, które są napisane przeze mnie i uzależnienia od modułu osoby trzeciej, że nie mam kontroli nad w module C (zależności są w następujący sposób: zależy C, B zależy)
W module AI klasy oznaczone są @Configuration
, a także @AutoConfigureBefore(ClassFromModuleD.class)
. Moduł BI już inna klasa opatrzone @Configuration
a także @AutoConfigureBefore(ClassFromModuleA.class)
miałem nadzieję, że będzie to skutkować w definicjach fasoli w moim modułem B są skonfigurowane najpierw, a następnie fasoli w moim module Klasa konfiguracja wreszcie te w C
Próbowałem również dodać plik META-INF/spring.factories
do obu modułów A i B, który deklaruje pojedynczy plik konfiguracyjny obecny w jego własnym module. Na przykład. o moduł A
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.exmaple.moduleAConfiguration
oraz moduł B:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.exmaple.moduleBConfiguration
nie widzę żądaną kolejność konfiguracji, w rzeczywistości wydaje się być dokładnie odwrotnie do tego, co chcę . Użyłem instrukcji rejestrowania i debuggera, aby przejść i wygląda na to, że konfiguracja z modułu C jest stosowana najpierw, a następnie A w końcu B.
Czy ktoś mógłby wskazać, co mogłem pominąć lub czy jest inny sposób Zrób to? bardzo dziękuję z góry.
można pokazać swoją główną klasę konfiguracji? Co rozumiesz przez "skonfigurowany" (skąd wiesz, że jedna rzecz pojawia się przed innym w e-mailu)? –
Główna klasa konfiguracja wygląda następująco: '@EnableReactor @SpringBootApplication public class SpringConfiguration { }' wierzę, że kolejność nie jest to, co pragnę bo umieściliśmy punkty przerwania w różnych metod i definicji fasoli nie są trafieni w kolejności, na którą liczyłem. Problem polega na tym, że komponent bean w module C próbuje wyszukać komponent bean w kontekście, którego jeszcze nie ma, ponieważ jest skonfigurowany przez moduły A i B, które nie zostały jeszcze automatycznie skonfigurowane ... Jeśli przejdę przez uruchamianie kodu dla moduł C, a następnie jakiś czas później komponenty są konfigurowane (zbyt późno)! –
Adnotacje 'AutoconfigureBefore/After' mają zastosowanie tylko do kolejności importowania klas do fabryki fasoli. Nie mówią nic o kolejności tworzenia fasoli, więc punkty przerwania nie pomagają w zrozumieniu problemu. Jeśli nie można utworzyć komponentu bean, musi on zawierać błąd i ślad stosu, więc może to pomogłoby w opublikowaniu? –