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