BeanDefinition is an interface, which describes a bean instance. It has setter methods which can be used to programmatically set the Spring specific characteristics to a bean, for example BeanDefinition #setScope(String scope) can be used to set a scope other than default singleton.
GenericBeanDefinition
This is the commonly used BeanDefinition implementation.
It allows to specify the bean class, bean characteristics plus constructor argument values and property values.
In the next tutorials we will see how to work with BeanDefinition.