Ho un'applicazione Spring Boot. Ho aggiunto molte dipendenze (sfortunatamente, sembra che mi servano tutte) e il tempo di avvio è aumentato parecchio. Basta fare un SpringApplication.run(source, args)
richiede 10 secondi.
Anche se potrebbe non essere molto rispetto a ciò a cui sono "abituato", non sono contento che ci voglia così tanto, soprattutto perché interrompe il flusso di sviluppo. L'applicazione stessa è piuttosto piccola a questo punto, quindi presumo che la maggior parte delle volte sia correlata alle dipendenze aggiunte, non alle classi dell'app stesse.
Presumo che il problema sia la scansione del percorso di classe, ma non sono sicuro di come:
- Conferma che è questo il problema (ad esempio, come eseguire il "debug" di Spring Boot)
- Se è davvero la causa, come posso limitarla, in modo che diventi più veloce? Ad esempio, se so che alcune dipendenze o pacchetti non contengono nulla che Spring dovrebbe sottoporre a scansione, c'è un modo per limitarlo?
Presumo che migliorare Spring per avere l'inizializzazione del bean parallelo durante l'avvio velocizzerebbe le cose, ma la richiesta di miglioramento è stata aperta dal 2011, senza alcun progresso. Vedo alcuni altri sforzi nello stesso Spring Boot, come i miglioramenti della velocità di Investigate Tomcat JarScanning , ma questo è specifico di Tomcat ed è stato abbandonato.
Questo articolo:
sebbene mirato a test di integrazione, suggerisce di utilizzare lazy-init=true
, tuttavia non so come applicarlo a tutti i bean in Spring Boot utilizzando la configurazione Java - qualche puntatore qui?
Qualsiasi (altro) suggerimento sarebbe il benvenuto.
@ComponentScan
quelli vengono scansionati. Un'altra cosa è assicurarsi di non aver abilitato il debug o la registrazione della traccia poiché generalmente la registrazione è lenta, molto lenta.