У меня есть приложение Spring Boot. Я добавил много зависимостей (к сожалению, похоже, все они мне нужны), и время запуска значительно увеличилось. Просто выполнение SpringApplication.run(source, args)
занимает 10 секунд.
Хотя это может быть немного по сравнению с тем, к чему «привыкли», я недоволен тем, что это занимает так много времени, в основном потому, что это нарушает процесс разработки. Само приложение на данный момент довольно мало, поэтому я предполагаю, что большую часть времени он связан с добавленными зависимостями, а не с самими классами приложения.
Я предполагаю, что проблема заключается в сканировании пути к классам, но я не знаю, как:
- Подтвердите, что это проблема (например, как «отладить» Spring Boot)
- Если это действительно причина, как я могу ее ограничить, чтобы она стала быстрее? Например, если я знаю, что какая-то зависимость или пакет не содержат ничего, что Spring должен сканировать, есть ли способ ограничить это?
Я предполагаю, что расширение Spring для параллельной инициализации bean-компонентов во время запуска ускорит процесс, но этот запрос на улучшение был открыт с 2011 года, без какого-либо прогресса. Я вижу некоторые другие усилия в самой Spring Boot, такие как Исследование улучшений скорости Tomcat JarScanning , но это специфично для Tomcat, и от него отказались.
Эта статья:
хотя и нацелен на интеграционные тесты, предлагает использовать lazy-init=true
, однако я не знаю, как применить это ко всем bean-компонентам в Spring Boot с использованием конфигурации Java - здесь есть указатели?
Любые (другие) предложения приветствуются.
@ComponentScan
них, также будут сканироваться. Другое дело - убедиться, что вы не включили отладку или ведение журнала трассировки, поскольку обычно ведение журнала происходит медленно, очень медленно.