Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Spring: lazy, bean

В каком случае бин с @Lazy всё равно будет создан сразу?

Вопрос проверяет понимание скрытых зависимостей и реального поведения контейнера Spring.

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

Бин с @Lazy будет создан сразу, если его явно запрашивают при старте контекста. Также это произойдёт, если он внедряется в не-lazy singleton без прокси. Некоторые инфраструктурные бины Spring тоже могут инициировать создание. @Lazy не является абсолютной гарантией отложенной инициализации. Контекст и зависимости могут её нарушить.

Длинный ответ

Аннотация @Lazy работает не изолированно, а в контексте всего контейнера.

Основные случаи eager-создания

Перед перечислением важно понимать, что Spring обязан создать бин, если без него невозможно корректно собрать контекст.

1. Внедрение в eager-singleton без прокси

Если:

  • бин A — singleton

  • бин B — @Lazy

  • B внедряется напрямую в A

то B будет создан при инициализации A.

2. Явный запрос бина

Примеры:

  1. applicationContext.getBean(...)

  2. Использование в @PostConstruct

  3. Обращение в InitializingBean

3. Использование в инфраструктуре Spring

Некоторые бины:

  • BeanPostProcessor

  • ApplicationListener

  • аспекты

могут быть созданы заранее, даже если помечены @Lazy.

4. @Lazy только на поле

@Autowired
@Lazy
private HeavyService service;

Если прокси не создаётся:

  • бин может быть инициализирован сразу

Практический вывод

@Lazy — это подсказка контейнеру, а не жёсткое правило. Реальное поведение зависит от:

  • графа зависимостей

  • способа внедрения

  • типа бина

Вывод

Lazy-инициализация может быть нарушена зависимостями и инфраструктурой Spring. Всегда важно понимать, кто и когда запрашивает бин.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • Spring

    Spring

Ключевые слова

#lazy

#bean

Подпишись на Java Developer в телеграм