Class MapMergeDirectiveBeanPostProcessor
- java.lang.Object
-
- de.hybris.platform.spring.config.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
public class MapMergeDirectiveBeanPostProcessor extends java.lang.Object implements org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.config.BeanPostProcessor, org.springframework.beans.factory.InitializingBeanThis is BeanPostProcessor for adding items into existing maps.It creates a cache of
MapMergeDirectivebean 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 useBeanDefinitionValueResolver(custom implementation of spring class) to create a object out of beanDefiniton without creating a properMapMergeDirectivebean (this is impossible at this point as it would create circular dependency). The representation ofMapMergeDirectiveis then applied to target bean.Forcing this BeanPostProcessor to load all
MapMergeDirectiveinstances 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 Constructor Description MapMergeDirectiveBeanPostProcessor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidafterPropertiesSet()Creates cache of mapMergeDirective beanDefinitions.protected booleanisSupportedClass(java.lang.String name)java.lang.ObjectpostProcessAfterInitialization(java.lang.Object bean, java.lang.String beanName)java.lang.ObjectpostProcessBeforeInitialization(java.lang.Object bean, java.lang.String beanName)voidsetBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)protected booleanshouldApplyMergeDirectiveBean(java.lang.String beanName)
-
-
-
Method Detail
-
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
public void afterPropertiesSet() throws java.lang.ExceptionCreates cache of mapMergeDirective beanDefinitions.- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
java.lang.Exception
-
isSupportedClass
protected boolean isSupportedClass(java.lang.String name)
-
postProcessBeforeInitialization
public java.lang.Object postProcessBeforeInitialization(java.lang.Object bean, java.lang.String beanName) throws org.springframework.beans.BeansException- Specified by:
postProcessBeforeInitializationin interfaceorg.springframework.beans.factory.config.BeanPostProcessor- Throws:
org.springframework.beans.BeansException
-
postProcessAfterInitialization
public java.lang.Object postProcessAfterInitialization(java.lang.Object bean, java.lang.String beanName) throws org.springframework.beans.BeansException- Specified by:
postProcessAfterInitializationin interfaceorg.springframework.beans.factory.config.BeanPostProcessor- Throws:
org.springframework.beans.BeansException
-
shouldApplyMergeDirectiveBean
protected boolean shouldApplyMergeDirectiveBean(java.lang.String beanName)
-
-