Sto riscontrando qualche problema nel far applicare una determinata configurazione Spring nell'ordine desiderato con Spring Boot in un progetto Maven a più moduli.Ordine di configurazione automatica avvio a molla
devo moduli A e B che sono scritti da me e una dipendenza da un modulo di terze parti che non ho alcun controllo su nel modulo C (le dipendenze sono i seguenti: A dipende da C, B dipende A)
Nel modulo AI ha una classe annotata con @Configuration
e anche @AutoConfigureBefore(ClassFromModuleD.class)
. Nel modulo BI ho un'altra classe annotata con @Configuration
e anche @AutoConfigureBefore(ClassFromModuleA.class)
Speravo che ciò avrebbe comportato la definizione delle definizioni di bean nel mio modulo B, seguita da bean nel mio modulo Una classe di configurazione quindi finalmente quelle in C
Ho anche provato ad aggiungere un file META-INF/spring.factories
a entrambi i moduli A e B che dichiara il singolo file di configurazione presente nel proprio modulo. Per esempio. per il modulo A
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.exmaple.moduleAConfiguration
e nel modulo B:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.exmaple.moduleBConfiguration
non sto vedendo l'ordine desiderato di configurazione, infatti, sembra essere l'esatto contrario di quello che voglio . Ho usato le istruzioni di registrazione e un debugger e sembra che la configurazione del modulo C sia stata applicata per prima, seguita da A e infine B.
Qualcuno potrebbe indicare cosa ho perso o se c'è un altro modo per Fai questo? grazie mille in anticipo
Potete mostrare la vostra classe di configurazione principale? Cosa intendi per "configurato" (come fai a sapere che una cosa viene prima di un'altra in euntime)? –
La classe di configurazione principale appare così: '@EnableReactor @SpringBootApplication public class SpringConfiguration {} ' Credo che l'ordine non è quello che desidero perché ho messo i punti di interruzione nei vari metodi di definizione e fagioli non vengono colpiti nell'ordine in cui speravo. Il problema è che un bean nel modulo C prova a cercare un bean nel contesto che non è ancora lì perché è configurato dai moduli A e B che non sono ancora stati autoconfigurati ... Se passo il codice viene eseguito per modulo C e poi qualche tempo dopo i bean vengono configurati (troppo tardi)! –
Le annotazioni 'AutoconfigureBefore/After' si applicano solo all'ordine in cui le classi vengono importate nel bean factory. Non dicono nulla sull'ordine di creazione dei bean, quindi i punti di rottura non aiutano realmente a capire il problema. Se non è possibile creare un bean, deve esserci un errore e una traccia dello stack, quindi forse sarebbe utile pubblicarli? –