Class LazyInitOverrideBeanFactoryPostProcessor

  • All Implemented Interfaces:
    org.springframework.beans.factory.config.BeanFactoryPostProcessor

    public class LazyInitOverrideBeanFactoryPostProcessor
    extends java.lang.Object
    implements org.springframework.beans.factory.config.BeanFactoryPostProcessor
    This BeanFactoryPostProcessor was created to make sure that some beans can be eagerly loaded even if default setting is set to lazy loading.

    This is useful especially for some configuration beans like ListMergeDirective which would never be loaded in lazy mode because there is nothing that requires them explicitly, but without them system will misbehave.

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.Class<?> forName​(java.lang.String name)
      Helper method for getting class for name without throwing exception.
      protected java.util.List<java.lang.Class<?>> getEagerlyLoadedClasses()  
      protected boolean getLazyInit()  
      protected java.util.Optional<org.springframework.beans.factory.config.BeanDefinition> getMergedBeanDefinition​(java.lang.String beanName, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
      Helper method for getting MergedBeanDefintion and ignoring potential errors by returning Optional.empty
      protected boolean isSupportedClass​(java.lang.Class<?> clazz)
      Predicate finding if given class exists in set of supported classes (is assignable to any of them)
      protected void overrideLazyInit​(java.lang.String beanName, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
      Overrides lazyInit property for given bean definition.
      void postProcessBeanFactory​(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
      Searches for bean definitions that are not abstract and are of particular class.
      void setEagerlyLoadedClasses​(java.util.List<java.lang.Class<?>> eagerlyLoadedClasses)  
      void setLazyInit​(boolean lazyInit)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • LazyInitOverrideBeanFactoryPostProcessor

        public LazyInitOverrideBeanFactoryPostProcessor()
    • Method Detail

      • postProcessBeanFactory

        public void postProcessBeanFactory​(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
                                    throws org.springframework.beans.BeansException
        Searches for bean definitions that are not abstract and are of particular class. For those bean definitions it overrides lazyInit property.
        Specified by:
        postProcessBeanFactory in interface org.springframework.beans.factory.config.BeanFactoryPostProcessor
        Throws:
        org.springframework.beans.BeansException
      • getMergedBeanDefinition

        protected java.util.Optional<org.springframework.beans.factory.config.BeanDefinition> getMergedBeanDefinition​(java.lang.String beanName,
                                                                                                                      org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
        Helper method for getting MergedBeanDefintion and ignoring potential errors by returning Optional.empty
      • forName

        protected java.lang.Class<?> forName​(java.lang.String name)
        Helper method for getting class for name without throwing exception. Null returned for non existing classes will be ignored in filtering stream.
      • isSupportedClass

        protected boolean isSupportedClass​(java.lang.Class<?> clazz)
        Predicate finding if given class exists in set of supported classes (is assignable to any of them)
      • overrideLazyInit

        protected void overrideLazyInit​(java.lang.String beanName,
                                        org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
        Overrides lazyInit property for given bean definition.
      • setEagerlyLoadedClasses

        public void setEagerlyLoadedClasses​(java.util.List<java.lang.Class<?>> eagerlyLoadedClasses)
      • getEagerlyLoadedClasses

        protected java.util.List<java.lang.Class<?>> getEagerlyLoadedClasses()
      • setLazyInit

        public void setLazyInit​(boolean lazyInit)
      • getLazyInit

        protected boolean getLazyInit()