Подтвердить что ты не робот

Минимизировать Spring Время загрузки

На мой взгляд, проекты SpringBoot занимают много времени для загрузки. Вероятно, это происходит потому, что SpringBoot настраивает компоненты для вас, некоторые из которых вам даже не нужны. Наиболее очевидной задачей является удаление ненужных зависимостей из вашего пути к классу. Однако этого недостаточно.

Есть ли способ узнать, какие модули SpringBoot настраиваются для вас, чтобы выбрать то, что вам не нужно, и отключить их?

Есть ли что-нибудь еще, чтобы ускорить время запуска для приложений SpringBoot вообще?

4b9b3361

Ответ 1

Я могу сказать, что я запускаю большое (800 000 + строк кода) приложение, используя успокоительные веб-сервисы через транзакции Spring MVC, JMS, Atomikos, Hibernate, JMX и встроенный Tomcat. При этом приложение запустится на моем локальном рабочем столе примерно за 19 секунд.

Spring Boot пытается не настраивать модули, которые вы не используете. Тем не менее, легко ввести дополнительные зависимости и конфигурацию, которые вы не планировали.

Помните, что Spring Boot следует за концепцией конфигурации над конфигурацией и простым размещением библиотеки в вашем пути к классу может привести к тому, что Spring Boot попытается настроить модуль для использования библиотеки. Кроме того, делая что-то так же просто, как аннотирование вашего класса с помощью @RestController, вы запускаете Spring Boot для автоматической настройки всего Spring стека MVC.

Вы можете увидеть, что происходит под обложками, и включить ведение журнала отладки так же просто, как указать --debug при запуске приложения из командной строки. Вы также можете указать debug = true в своих application.properties.

Кроме того, вы можете установить уровень ведения журнала в application.properties так же просто, как:

logging.level.org.springframework.web: DEBUG logging.level.org.hibernate: ERROR

Если вы обнаружите модуль с автоматической настройкой, который вам не нужен, его можно отключить. Документы для этого можно найти здесь: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-disabling-specific-auto-configuration

Пример будет выглядеть так:

@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}