org.springframework.beans.factory.support

## Interface MergedBeanDefinitionPostProcessor

- All Superinterfaces:
    BeanPostProcessor
  All Known Implementing Classes:
    AutowiredAnnotationBeanPostProcessor, CommonAnnotationBeanPostProcessor, InitDestroyAnnotationBeanPostProcessor, JmsListenerAnnotationBeanPostProcessor, PersistenceAnnotationBeanPostProcessor, RequiredAnnotationBeanPostProcessor, ScheduledAnnotationBeanPostProcessor

      public interface MergedBeanDefinitionPostProcessor
      extends BeanPostProcessor

  Post-processor callback interface for merged bean definitions at runtime. `BeanPostProcessor` implementations may implement this sub-interface in order to post-process the merged bean definition (a processed copy of the original bean definition) that the Spring `BeanFactory` uses to create a bean instance.

  The `postProcessMergedBeanDefinition(org.springframework.beans.factory.support.RootBeanDefinition, java.lang.Class<?>, java.lang.String)` method may for example introspect the bean definition in order to prepare some cached metadata before post-processing actual instances of a bean. It is also allowed to modify the bean definition but only for definition properties which are actually intended for concurrent modification. Essentially, this only applies to operations defined on the `RootBeanDefinition` itself but not to the properties of its base classes.

  Since:
    2.5
  Author:
    Juergen Hoeller
  See Also:
    `ConfigurableBeanFactory.getMergedBeanDefinition(java.lang.String)`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName)` Post-process the given merged bean definition for the specified bean.
    `default void` | `resetBeanDefinition(String beanName)` A notification that the bean definition for the specified name has been reset, and that this post-processor should clear any metadata for the affected bean.

    - ### Methods inherited from interface org.springframework.beans.factory.config.BeanPostProcessor

      `postProcessAfterInitialization, postProcessBeforeInitialization`

- - ### Method Detail

    - #### postProcessMergedBeanDefinition

          void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition,
                                               Class<?> beanType,
                                               String beanName)

      Post-process the given merged bean definition for the specified bean.
      Parameters:
        `beanDefinition` - the merged bean definition for the bean
        `beanType` - the actual type of the managed bean instance
        `beanName` - the name of the bean
      See Also:
        `AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(org.springframework.beans.factory.support.RootBeanDefinition, java.lang.Class<?>, java.lang.String)`

    - #### resetBeanDefinition

          default void resetBeanDefinition(String beanName)

      A notification that the bean definition for the specified name has been reset, and that this post-processor should clear any metadata for the affected bean.

      The default implementation is empty.

      Parameters:
        `beanName` - the name of the bean
      Since:
        5.1
      See Also:
        `DefaultListableBeanFactory.resetBeanDefinition(java.lang.String)`