org.springframework.beans.factory.config

## Interface BeanFactoryPostProcessor

- All Known Subinterfaces:
    BeanDefinitionRegistryPostProcessor
  All Known Implementing Classes:
    AspectJWeavingEnabler, ConfigurationClassPostProcessor, CustomAutowireConfigurer, CustomEditorConfigurer, CustomScopeConfigurer, DeprecatedBeanWarner, EventListenerMethodProcessor, PlaceholderConfigurerSupport, PreferencesPlaceholderConfigurer, PropertyOverrideConfigurer, PropertyPlaceholderConfigurer, PropertyResourceConfigurer, PropertySourcesPlaceholderConfigurer
  Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

      @FunctionalInterface
      public interface BeanFactoryPostProcessor

  Factory hook that allows for custom modification of an application context's bean definitions, adapting the bean property values of the context's underlying bean factory.

  Useful for custom config files targeted at system administrators that override bean properties configured in the application context. See `PropertyResourceConfigurer` and its concrete implementations for out-of-the-box solutions that address such configuration needs.

  A `BeanFactoryPostProcessor` may interact with and modify bean definitions, but never bean instances. Doing so may cause premature bean instantiation, violating the container and causing unintended side effects. If bean instance interaction is required, consider implementing `BeanPostProcessor` instead.

  ### Registration

  An `ApplicationContext` auto-detects `BeanFactoryPostProcessor` beans in its bean definitions and applies them before any other beans get created. A `BeanFactoryPostProcessor` may also be registered programmatically with a `ConfigurableApplicationContext`.

  ### Ordering

  `BeanFactoryPostProcessor` beans that are autodetected in an `ApplicationContext` will be ordered according to `PriorityOrdered` and `Ordered` semantics. In contrast, `BeanFactoryPostProcessor` beans that are registered programmatically with a `ConfigurableApplicationContext` will be applied in the order of registration; any ordering semantics expressed through implementing the `PriorityOrdered` or `Ordered` interface will be ignored for programmatically registered post-processors. Furthermore, the `@Order` annotation is not taken into account for `BeanFactoryPostProcessor` beans.

  Since:
    06.07.2003
  Author:
    Juergen Hoeller, Sam Brannen
  See Also:
    `BeanPostProcessor`, `PropertyResourceConfigurer`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)` Modify the application context's internal bean factory after its standard initialization.

- - ### Method Detail

    - #### postProcessBeanFactory

          void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
                               throws BeansException

      Modify the application context's internal bean factory after its standard initialization. All bean definitions will have been loaded, but no beans will have been instantiated yet. This allows for overriding or adding properties even to eager-initializing beans.
      Parameters:
        `beanFactory` - the bean factory used by the application context
      Throws:
        `BeansException` - in case of errors