Mam aplikację Spring Boot. Dodałem sporo zależności (niestety, wygląda na to, że potrzebuję ich wszystkich) i czas uruchamiania znacznie się wydłużył. Samo wykonanie SpringApplication.run(source, args)
zajmuje 10 sekund.
Chociaż może to nie być dużo w porównaniu do tego, do czego są „przyzwyczajeni”, jestem niezadowolony, że zajmuje to tyle czasu, głównie dlatego, że przerywa to proces programowania. Sama aplikacja jest w tym momencie raczej mała, więc zakładam, że większość czasu jest związana z dodanymi zależnościami, a nie z samymi klasami aplikacji.
Zakładam, że problemem jest skanowanie ścieżek klas, ale nie wiem, jak:
- Potwierdź, że na tym polega problem (tj. Jak „debugować” Spring Boot)
- Jeśli to naprawdę jest przyczyna, jak mogę to ograniczyć, żeby przyspieszyło? Na przykład, jeśli wiem, że pewna zależność lub pakiet nie zawiera niczego, co powinien skanować Spring, czy istnieje sposób, aby to ograniczyć?
Zakładam, że rozszerzenie Springa, aby miał równoległą inicjalizację fasoli podczas uruchamiania , przyspieszyłoby rzeczy, ale to żądanie ulepszenia jest otwarte od 2011 roku i nie ma żadnego postępu. Widzę inne wysiłki w samym Spring Boot, takie jak ulepszenia prędkości Investigate Tomcat JarScanning , ale jest to specyficzne dla Tomcat i zostało porzucone.
Ten artykuł:
chociaż ma na celu testy integracyjne, sugeruje użycie lazy-init=true
, jednak nie wiem, jak zastosować to do wszystkich fasoli w Spring Boot przy użyciu konfiguracji Java - jakieś wskazówki tutaj?
Wszelkie (inne) sugestie będą mile widziane.
@ComponentScan
również są skanowane. Inną rzeczą jest upewnienie się, że nie włączyłeś rejestrowania debugowania lub śledzenia, ponieważ ogólnie rejestrowanie jest powolne, bardzo wolne.