Spring Boot: ленивая инициализация (Lazy Initialization)

SpringApplication позволяет лениво инициализировать приложение. Когда ленивая инициализация включена, компоненты (beans) создаются по мере необходимости, а не во время запуска приложения. В результате включение ленивой инициализации может сократить время, необходимое для запуска приложения. В веб-приложении включение ленивой инициализации приведет к тому, что многие веб-компоненты (beans) не будут инициализированы до получения HTTP-запроса.

Недостатком ленивой инициализации является то, что она может задержать обнаружение проблемы с приложением. Если неправильно сконфигурированный компонент (bean) инициализируется лениво, сбой больше не будет возникать во время запуска, и проблема станет очевидной только после инициализации компонента (bean). Необходимо также позаботиться о том, чтобы JVM имела достаточно памяти для размещения всех компонентов (beans) приложения, а не только тех, которые инициализируются во время запуска. По этим причинам ленивая инициализация не включена по умолчанию, и рекомендуется выполнить точную настройку размера кучи JVM перед включением ленивой инициализации.

Ленивая инициализация может быть включена программно с помощью метода lazyInitialization в SpringApplicationBuilder или метода setLazyInitialization в SpringApplication. Кроме того, ее можно включить с помощью свойства spring.main.lazy-initialization, как показано в следующем примере:

spring.main.lazy-initialization=true

Если вы хотите отключить ленивую инициализацию для определенных компонентов (beans) при использовании ленивой инициализации для остальной части приложения, вы можете явно установить для их атрибута lazy значение false, используя аннотацию @Lazy(false).


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки