Ich habe eine Spring Boot-Anwendung. Ich habe viele Abhängigkeiten hinzugefügt (leider brauche ich alle) und die Startzeit ist ziemlich hoch. Nur ein SpringApplication.run(source, args)
dauert 10 Sekunden.
Das ist zwar nicht viel im Vergleich zu dem, was "gewohnt" ist, aber ich bin unglücklich, dass es so viel kostet, vor allem, weil es den Entwicklungsfluss unterbricht. Die Anwendung selbst ist zu diesem Zeitpunkt eher klein, daher gehe ich davon aus, dass die meiste Zeit mit den hinzugefügten Abhängigkeiten zusammenhängt, nicht mit den App-Klassen selbst.
Ich gehe davon aus, dass das Problem das Scannen von Klassenpfaden ist, bin mir aber nicht sicher, wie:
- Bestätigen Sie, dass dies das Problem ist (dh wie Sie Spring Boot "debuggen").
- Wenn es wirklich die Ursache ist, wie kann ich es begrenzen, damit es schneller wird? Wenn ich zum Beispiel weiß, dass eine Abhängigkeit oder ein Paket nichts enthält, was Spring scannen sollte, gibt es eine Möglichkeit, dies einzuschränken?
Ich gehe davon aus, dass die Erweiterung von Spring auf eine parallele Bean-Initialisierung während des Startvorgangs die Dinge beschleunigen würde, aber diese Erweiterungsanforderung ist seit 2011 ohne Fortschritte geöffnet. Ich sehe einige andere Bemühungen in Spring Boot selbst, wie z. B. die Verbesserung der Geschwindigkeit von Tomcat JarScanning untersuchen , aber das ist Tomcat-spezifisch und wurde aufgegeben.
Dieser Beitrag:
Obwohl auf Integrationstests ausgerichtet, schlägt die Verwendung vor lazy-init=true
, aber ich weiß nicht, wie ich dies auf alle Beans in Spring Boot unter Verwendung der Java-Konfiguration anwenden soll - irgendwelche Hinweise hier?
Alle (anderen) Vorschläge wären willkommen.
@ComponentScan
, werden diese ebenfalls gescannt. Eine andere Sache ist, sicherzustellen, dass Sie die Debug- oder Trace-Protokollierung nicht aktiviert haben, da die Protokollierung im Allgemeinen langsam, sehr langsam ist.