Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Spring: beandefinition, metadata

Что такое BeanDefinition?

Вопрос проверяет понимание того, как Spring «знает», какие бины создавать и как именно это делать.

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

BeanDefinition — это метаданные о бине.
Она описывает, как создать бин и какие у него свойства.
Spring читает BeanDefinition при старте контекста.
На основе этих данных контейнер создает бины.

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

Spring не создает бины «из воздуха» — он опирается на описание каждого бина.

Определение

BeanDefinition — это объект, содержащий полное описание бина для Spring-контейнера.

В нем нет самого объекта, только информация о нем.

Что хранится в BeanDefinition

Обычно BeanDefinition содержит:

  1. Имя класса бина

  2. Scope (singleton, prototype)

  3. Способ создания (конструктор, фабричный метод)

  4. Список зависимостей

  5. Init и destroy методы

Откуда берутся BeanDefinition

Spring формирует BeanDefinition из:

  1. Аннотаций (@Component, @Service)

  2. Java-конфигурации (@Bean)

  3. XML-конфигурации

Когда используется BeanDefinition

BeanDefinition активно используется:

  1. На этапе старта контекста

  2. При сканировании классов

  3. При создании прокси и автоконфигурации

Практический смысл

Работа с BeanDefinition позволяет:

  1. Динамически регистрировать бины

  2. Писать свои BeanFactoryPostProcessor

  3. Глубже кастомизировать Spring

Краткий вывод

BeanDefinition — это описание бина, а не сам бин.
Spring сначала работает с метаданными, а уже потом создает объекты.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • Spring

    Spring

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

#beandefinition

#metadata

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