@FunctionalInterface public interface BeanFactoryPostProcessor
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.
 
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.
 
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.
BeanPostProcessor, 
PropertyResourceConfigurer| Modifier and Type | Method and Description | 
|---|---|
| void | postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)Modify the application context's internal bean factory after its standard
 initialization. | 
void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException
beanFactory - the bean factory used by the application contextBeansException - in case of errors