BeanDefinition — это абстракция метаданных, описывающих bean в Spring-контейнере. Она определяет конфигурацию bean:
beanClass)initMethod, destroyMethod)scope)propertyValues, constructorArgumentValues)lazyInit)primary)factoryBeanName, factoryMethodName)Он нужен для:
BeanDefinition для регистрации bean в своем реестре, еще до того, как сам bean будет создан.BeanDefinition содержит всю информацию, необходимую контейнеру для создания и настройки экземпляра bean.BeanDefinition и отложить создание экземпляра bean до момента его первого запроса.BeanDefinition позволяет программно создавать и модифицировать конфигурацию bean, например, при использовании XML-файлов или конфигурационных классов в Java.Пример создания BeanDefinition программно:
java
Основные реализации BeanDefinition:
RootBeanDefinition: Представляет итоговую, объединенную конфигурацию bean.ChildBeanDefinition: Представляет конфигурацию bean, наследующуюся от другого bean.GenericBeanDefinition: Универсальная реализация, может использоваться для создания bean любой сложности.