Как работает аннотация @Lazy под капотом?

Аннотация @Lazy в Spring используется для отложенной инициализации бинов. Под капотом она работает следующим образом:

Короткий ответ

Что ответить на собеседовании

Аннотация @Lazy в Spring используется для отложенной инициализации бинов. Под капотом она работает следующим образом:

Подробный разбор

Ответ с пояснениями

Аннотация @Lazy в Spring используется для отложенной инициализации бинов. Под капотом она работает следующим образом:

  • При загрузке контекста Spring не создаёт бин сразу, а вместо этого создаёт прокси-объект.
  • Этот прокси откладывает фактическое создание и инициализацию бина до первого обращения к нему.
  • Когда приложение впервые запрашивает бин, прокси инициализирует настоящий объект и передаёт управление ему.

Таким образом, @Lazy помогает оптимизировать время запуска приложения и ресурсы, создавая бины только при необходимости.

Пример:

@Component
@Lazy
public class HeavyService {
    public HeavyService() {
        System.out.println("HeavyService инициализирован");
    }
}

В этом примере HeavyService не будет создан при старте контекста, а только при первом вызове из другого компонента.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее