Class MapMergeDirectiveBeanPostProcessor
- All Implemented Interfaces:
org.springframework.beans.factory.Aware,org.springframework.beans.factory.BeanFactoryAware,org.springframework.beans.factory.config.BeanPostProcessor,org.springframework.beans.factory.InitializingBean
- Direct Known Subclasses:
MapMergeDirectiveBeanPostProcessor
It creates a cache of MapMergeDirective bean definitions found in the system during its initialization. Then
each bean is checked if it should be modified by any of cached directives. If yes, we use
BeanDefinitionValueResolver (custom implementation of spring class) to create a object out of beanDefiniton
without creating a proper MapMergeDirective bean (this is impossible at this point as it would create
circular dependency). The representation of MapMergeDirective is then applied to target bean.
Forcing this BeanPostProcessor to load all MapMergeDirective instances during its initialization (via
dependency injection or by extracting them form ApplicationContext) will lead to change in order in which beans are
intialized. Especially some beans will be instanciated before other BeanPostProcessors which may highly affect
stability of the system, so its a bad idea.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidCreates cache of mapMergeDirective beanDefinitions.protected booleanisSupportedClass(String name) postProcessAfterInitialization(Object bean, String beanName) postProcessBeforeInitialization(Object bean, String beanName) voidsetBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory) protected booleanshouldApplyMergeDirectiveBean(String beanName)
-
Constructor Details
-
MapMergeDirectiveBeanPostProcessor
public MapMergeDirectiveBeanPostProcessor()
-
-
Method Details
-
setBeanFactory
public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory) throws org.springframework.beans.BeansException - Specified by:
setBeanFactoryin interfaceorg.springframework.beans.factory.BeanFactoryAware- Throws:
org.springframework.beans.BeansException
-
afterPropertiesSet
Creates cache of mapMergeDirective beanDefinitions.- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
Exception
-
isSupportedClass
-
postProcessBeforeInitialization
public Object postProcessBeforeInitialization(Object bean, String beanName) throws org.springframework.beans.BeansException - Specified by:
postProcessBeforeInitializationin interfaceorg.springframework.beans.factory.config.BeanPostProcessor- Throws:
org.springframework.beans.BeansException
-
postProcessAfterInitialization
public Object postProcessAfterInitialization(Object bean, String beanName) throws org.springframework.beans.BeansException - Specified by:
postProcessAfterInitializationin interfaceorg.springframework.beans.factory.config.BeanPostProcessor- Throws:
org.springframework.beans.BeansException
-
shouldApplyMergeDirectiveBean
-