Sobes.tech
Назад к вопросам
Senior
5

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

Компании, где спрашивали
Octo

Ответ от нейросети

sobes.tech AI

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

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

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

Пример:

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

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