## Uses of Class
org.springframework.beans.factory.support.RootBeanDefinition

- Packages that use RootBeanDefinition
  Package | Description
  --- | ---
  org.springframework.beans.factory.annotation | Support package for annotation-driven bean configuration.
  org.springframework.beans.factory.support | Classes supporting the `org.springframework.beans.factory` package.
  org.springframework.context.annotation | Annotation support for the Application Context, including JSR-250 "common" annotations, component-scanning, and Java-based metadata for creating Spring-managed objects.
  org.springframework.jms.annotation | Annotations and support classes for declarative JMS listener endpoints.
  org.springframework.orm.jpa.support | Classes supporting the `org.springframework.orm.jpa` package.
  org.springframework.scheduling.annotation | Annotation support for asynchronous method execution.

- - ### Uses of RootBeanDefinition in org.springframework.beans.factory.annotation

    Methods in org.springframework.beans.factory.annotation with parameters of type RootBeanDefinition
    Modifier and Type | Method and Description
    --- | ---
    `void` | InjectionMetadata.`checkConfigMembers(RootBeanDefinition beanDefinition)`
    `protected Annotation` | QualifierAnnotationAutowireCandidateResolver.`getFactoryMethodAnnotation(RootBeanDefinition bd, Class<? extends Annotation> type)`
    `protected Annotation` | QualifierAnnotationAutowireCandidateResolver.`getQualifiedElementAnnotation(RootBeanDefinition bd, Class<? extends Annotation> type)`
    `void` | InitDestroyAnnotationBeanPostProcessor.`postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName)`
    `void` | RequiredAnnotationBeanPostProcessor.`postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName)` Deprecated.
    `void` | AutowiredAnnotationBeanPostProcessor.`postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName)`

  - ### Uses of RootBeanDefinition in org.springframework.beans.factory.support

    Methods in org.springframework.beans.factory.support that return RootBeanDefinition
    Modifier and Type | Method and Description
    --- | ---
    `RootBeanDefinition` | RootBeanDefinition.`cloneBeanDefinition()`
    `protected RootBeanDefinition` | AbstractBeanFactory.`getMergedBeanDefinition(String beanName, BeanDefinition bd)` Return a RootBeanDefinition for the given top-level bean, by merging with the parent if the given bean's definition is a child bean definition.
    `protected RootBeanDefinition` | AbstractBeanFactory.`getMergedBeanDefinition(String beanName, BeanDefinition bd, BeanDefinition containingBd)` Return a RootBeanDefinition for the given bean, by merging with the parent if the given bean's definition is a child bean definition.
    `protected RootBeanDefinition` | AbstractBeanFactory.`getMergedLocalBeanDefinition(String beanName)` Return a merged RootBeanDefinition, traversing the parent bean definition if the specified bean corresponds to a child bean definition.
    `protected RootBeanDefinition` | GenericTypeAwareAutowireCandidateResolver.`getResolvedDecoratedDefinition(RootBeanDefinition rbd)`

    Methods in org.springframework.beans.factory.support with parameters of type RootBeanDefinition
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | AbstractAutowireCapableBeanFactory.`applyMergedBeanDefinitionPostProcessors(RootBeanDefinition mbd, Class<?> beanType, String beanName)` Apply MergedBeanDefinitionPostProcessors to the specified bean definition, invoking their `postProcessMergedBeanDefinition` methods.
    `protected BeanWrapper` | AbstractAutowireCapableBeanFactory.`autowireConstructor(String beanName, RootBeanDefinition mbd, Constructor<?>[] ctors, Object[] explicitArgs)` "autowire constructor" (with constructor arguments by type) behavior.
    `protected void` | AbstractBeanFactory.`checkMergedBeanDefinition(RootBeanDefinition mbd, String beanName, Object[] args)` Check the given merged bean definition, potentially throwing validation exceptions.
    `protected abstract Object` | AbstractBeanFactory.`createBean(String beanName, RootBeanDefinition mbd, Object[] args)` Create a bean instance for the given merged bean definition (and arguments).
    `protected Object` | AbstractAutowireCapableBeanFactory.`createBean(String beanName, RootBeanDefinition mbd, Object[] args)` Central method of this class: creates a bean instance, populates the bean instance, applies post-processors, etc.
    `protected BeanWrapper` | AbstractAutowireCapableBeanFactory.`createBeanInstance(String beanName, RootBeanDefinition mbd, Object[] args)` Create a new instance for the specified bean, using an appropriate instantiation strategy: factory method, constructor autowiring, or simple instantiation.
    `protected void` | AbstractBeanFactory.`destroyBean(String beanName, Object bean, RootBeanDefinition mbd)` Destroy the given bean instance (usually a prototype instance obtained from this factory) according to the given bean definition.
    `protected Class<?>` | AbstractAutowireCapableBeanFactory.`determineTargetType(String beanName, RootBeanDefinition mbd, Class<?>... typesToMatch)` Determine the target type for the given bean definition.
    `protected Object` | AbstractAutowireCapableBeanFactory.`doCreateBean(String beanName, RootBeanDefinition mbd, Object[] args)` Actually create the specified bean.
    `protected Object` | AbstractAutowireCapableBeanFactory.`getEarlyBeanReference(String beanName, RootBeanDefinition mbd, Object bean)` Obtain a reference for early access to the specified bean, typically for the purpose of resolving a circular reference.
    `protected Object` | AbstractBeanFactory.`getObjectForBeanInstance(Object beanInstance, String name, String beanName, RootBeanDefinition mbd)` Get the object for the given bean instance, either the bean instance itself or its created object in case of a FactoryBean.
    `protected Object` | AbstractAutowireCapableBeanFactory.`getObjectForBeanInstance(Object beanInstance, String name, String beanName, RootBeanDefinition mbd)` Overridden in order to implicitly register the currently created bean as dependent on further beans getting programmatically retrieved during a `Supplier` callback.
    `protected RootBeanDefinition` | GenericTypeAwareAutowireCandidateResolver.`getResolvedDecoratedDefinition(RootBeanDefinition rbd)`
    `protected ResolvableType` | GenericTypeAwareAutowireCandidateResolver.`getReturnTypeForFactoryMethod(RootBeanDefinition rbd, DependencyDescriptor descriptor)`
    `protected Class<?>` | AbstractBeanFactory.`getTypeForFactoryBean(String beanName, RootBeanDefinition mbd)` Deprecated. since 5.2 in favor of `AbstractBeanFactory.getTypeForFactoryBean(String, RootBeanDefinition, boolean)`
    `protected Class<?>` | AbstractAutowireCapableBeanFactory.`getTypeForFactoryBean(String beanName, RootBeanDefinition mbd)` Deprecated.
    `protected ResolvableType` | AbstractBeanFactory.`getTypeForFactoryBean(String beanName, RootBeanDefinition mbd, boolean allowInit)` Determine the bean type for the given FactoryBean definition, as far as possible.
    `protected ResolvableType` | AbstractAutowireCapableBeanFactory.`getTypeForFactoryBean(String beanName, RootBeanDefinition mbd, boolean allowInit)` This implementation attempts to query the FactoryBean's generic parameter metadata if present to determine the object type.
    `protected Class<?>` | AbstractAutowireCapableBeanFactory.`getTypeForFactoryMethod(String beanName, RootBeanDefinition mbd, Class<?>... typesToMatch)` Determine the target type for the given bean definition which is based on a factory method.
    `protected Object` | AbstractAutowireCapableBeanFactory.`initializeBean(String beanName, Object bean, RootBeanDefinition mbd)` Initialize the given bean instance, applying factory callbacks as well as init methods and bean post processors.
    `Object` | SimpleInstantiationStrategy.`instantiate(RootBeanDefinition bd, String beanName, BeanFactory owner)`
    `Object` | InstantiationStrategy.`instantiate(RootBeanDefinition bd, String beanName, BeanFactory owner)` Return an instance of the bean with the given name in this factory.
    `Object` | SimpleInstantiationStrategy.`instantiate(RootBeanDefinition bd, String beanName, BeanFactory owner, Constructor<?> ctor, Object... args)`
    `Object` | InstantiationStrategy.`instantiate(RootBeanDefinition bd, String beanName, BeanFactory owner, Constructor<?> ctor, Object... args)` Return an instance of the bean with the given name in this factory, creating it via the given constructor.
    `Object` | SimpleInstantiationStrategy.`instantiate(RootBeanDefinition bd, String beanName, BeanFactory owner, Object factoryBean, Method factoryMethod, Object... args)`
    `Object` | InstantiationStrategy.`instantiate(RootBeanDefinition bd, String beanName, BeanFactory owner, Object factoryBean, Method factoryMethod, Object... args)` Return an instance of the bean with the given name in this factory, creating it via the given factory method.
    `protected BeanWrapper` | AbstractAutowireCapableBeanFactory.`instantiateBean(String beanName, RootBeanDefinition mbd)` Instantiate the given bean using its default constructor.
    `protected BeanWrapper` | AbstractAutowireCapableBeanFactory.`instantiateUsingFactoryMethod(String beanName, RootBeanDefinition mbd, Object[] explicitArgs)` Instantiate the bean using a named factory method.
    `protected Object` | SimpleInstantiationStrategy.`instantiateWithMethodInjection(RootBeanDefinition bd, String beanName, BeanFactory owner)` Subclasses can override this method, which is implemented to throw UnsupportedOperationException, if they can instantiate an object with the Method Injection specified in the given RootBeanDefinition.
    `protected Object` | CglibSubclassingInstantiationStrategy.`instantiateWithMethodInjection(RootBeanDefinition bd, String beanName, BeanFactory owner)`
    `protected Object` | SimpleInstantiationStrategy.`instantiateWithMethodInjection(RootBeanDefinition bd, String beanName, BeanFactory owner, Constructor<?> ctor, Object... args)` Subclasses can override this method, which is implemented to throw UnsupportedOperationException, if they can instantiate an object with the Method Injection specified in the given RootBeanDefinition.
    `protected Object` | CglibSubclassingInstantiationStrategy.`instantiateWithMethodInjection(RootBeanDefinition bd, String beanName, BeanFactory owner, Constructor<?> ctor, Object... args)`
    `protected void` | AbstractAutowireCapableBeanFactory.`invokeCustomInitMethod(String beanName, Object bean, RootBeanDefinition mbd)` Invoke the specified custom init method on the given bean.
    `protected void` | AbstractAutowireCapableBeanFactory.`invokeInitMethods(String beanName, Object bean, RootBeanDefinition mbd)` Give a bean a chance to react now all its properties are set, and a chance to know about its owning bean factory (this object).
    `protected boolean` | DefaultListableBeanFactory.`isAutowireCandidate(String beanName, RootBeanDefinition mbd, DependencyDescriptor descriptor, AutowireCandidateResolver resolver)` Determine whether the specified bean definition qualifies as an autowire candidate, to be injected into other beans which declare a dependency of matching type.
    `protected boolean` | AbstractBeanFactory.`isFactoryBean(String beanName, RootBeanDefinition mbd)` Check whether the given bean is defined as a `FactoryBean`.
    `protected void` | AbstractAutowireCapableBeanFactory.`populateBean(String beanName, RootBeanDefinition mbd, BeanWrapper bw)` Populate the bean instance in the given BeanWrapper with the property values from the bean definition.
    `void` | MergedBeanDefinitionPostProcessor.`postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName)` Post-process the given merged bean definition for the specified bean.
    `protected Class<?>` | AbstractBeanFactory.`predictBeanType(String beanName, RootBeanDefinition mbd, Class<?>... typesToMatch)` Predict the eventual bean type (of the processed bean instance) for the specified bean.
    `protected Class<?>` | AbstractAutowireCapableBeanFactory.`predictBeanType(String beanName, RootBeanDefinition mbd, Class<?>... typesToMatch)`
    `protected void` | AbstractBeanFactory.`registerDisposableBeanIfNecessary(String beanName, Object bean, RootBeanDefinition mbd)` Add the given bean to the list of disposable beans in this factory, registering its DisposableBean interface and/or the given destroy method to be called on factory shutdown (if applicable).
    `protected boolean` | AbstractBeanFactory.`requiresDestruction(Object bean, RootBeanDefinition mbd)` Determine whether the given bean requires destruction on shutdown.
    `protected Class<?>` | AbstractBeanFactory.`resolveBeanClass(RootBeanDefinition mbd, String beanName, Class<?>... typesToMatch)` Resolve the bean class for the specified bean definition, resolving a bean class name into a Class reference (if necessary) and storing the resolved Class in the bean definition for further use.
    `protected Object` | AbstractAutowireCapableBeanFactory.`resolveBeforeInstantiation(String beanName, RootBeanDefinition mbd)` Apply before-instantiation post-processors, resolving whether there is a before-instantiation shortcut for the specified bean.

    Constructors in org.springframework.beans.factory.support with parameters of type RootBeanDefinition
    Constructor and Description
    `RootBeanDefinition(RootBeanDefinition original)` Create a new RootBeanDefinition as deep copy of the given bean definition.

  - ### Uses of RootBeanDefinition in org.springframework.context.annotation

    Methods in org.springframework.context.annotation with parameters of type RootBeanDefinition
    Modifier and Type | Method and Description
    --- | ---
    `void` | CommonAnnotationBeanPostProcessor.`postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName)`

  - ### Uses of RootBeanDefinition in org.springframework.jms.annotation

    Methods in org.springframework.jms.annotation with parameters of type RootBeanDefinition
    Modifier and Type | Method and Description
    --- | ---
    `void` | JmsListenerAnnotationBeanPostProcessor.`postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName)`

  - ### Uses of RootBeanDefinition in org.springframework.orm.jpa.support

    Methods in org.springframework.orm.jpa.support with parameters of type RootBeanDefinition
    Modifier and Type | Method and Description
    --- | ---
    `void` | PersistenceAnnotationBeanPostProcessor.`postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName)`

  - ### Uses of RootBeanDefinition in org.springframework.scheduling.annotation

    Methods in org.springframework.scheduling.annotation with parameters of type RootBeanDefinition
    Modifier and Type | Method and Description
    --- | ---
    `void` | ScheduledAnnotationBeanPostProcessor.`postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName)`