Class HierarchicalBeanLoader

  • All Implemented Interfaces:
    org.springframework.beans.factory.Aware, org.springframework.beans.factory.FactoryBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationContextAware

    public class HierarchicalBeanLoader
    extends Object
    implements org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.FactoryBean, org.springframework.context.ApplicationContextAware
    Factory bean to find beans using a class hierarchy to drive the lookup. The well-known placeholder DEFAULT_DIALECT_PLACEHOLDER is replaced with successive class names starting from the dialect class and progressing up the hierarchy until the base class is reached. The bean is looked up in the context at each point until the bean is found or the base of the class hierarchy is reached.

    For example assume bean names:

        BEAN 1: contentDAO.org.hibernate.dialect.Dialect
        BEAN 2: contentDAO.org.hibernate.dialect.MySQLInnoDBDialect
        BEAN 3: propertyValueDAO.org.hibernate.dialect.Dialect
        BEAN 4: propertyValueDAO.org.hibernate.dialect.MySQLDialect
     
    and
        dialectBaseClass = org.hibernate.dialect.Dialect
     
    For dialect org.hibernate.dialect.MySQLInnoDBDialect the following will be returned:
        contentDAO.bean.dialect == BEAN 2
        propertyValueDAO.bean.dialect == BEAN 4
     
    For dialectorg.hibernate.dialect.MySQLDBDialect the following will be returned:
        contentDAO.bean.dialect == BEAN 1
        propertyValueDAO.bean.dialect == BEAN 4
     
    For dialectorg.hibernate.dialect.Dialect the following will be returned:
        contentDAO.bean.dialect == BEAN 1
        propertyValueDAO.bean.dialect == BEAN 3
     
    Since:
    3.2SP1
    Author:
    Derek Hulley
    • Constructor Detail

      • HierarchicalBeanLoader

        public HierarchicalBeanLoader()
        Create a new HierarchicalResourceLoader.
    • Method Detail

      • setApplicationContext

        public void setApplicationContext​(org.springframework.context.ApplicationContext ctx)
        The application context that this bean factory serves.
        Specified by:
        setApplicationContext in interface org.springframework.context.ApplicationContextAware
      • setTargetBeanName

        public void setTargetBeanName​(String targetBeanName)
        Parameters:
        targetBeanName - the name of the target bean to return, including the DEFAULT_DIALECT_PLACEHOLDER where the specific dialect must be replaced.
      • setTargetClass

        public void setTargetClass​(Class<?> targetClass)
        Set the target class that will be returned by getObjectType()
        Parameters:
        targetClass - the type that this factory returns
      • setDialectBaseClass

        public void setDialectBaseClass​(String className)
        Set the class to be used during hierarchical dialect replacement. Searches for the configuration location will not go further up the hierarchy than this class.
        Parameters:
        className - the name of the class or interface
      • setDialectClass

        public void setDialectClass​(String className)
      • afterPropertiesSet

        public void afterPropertiesSet()
                                throws Exception
        Specified by:
        afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
        Throws:
        Exception
      • getObjectType

        public Class<?> getObjectType()
        Specified by:
        getObjectType in interface org.springframework.beans.factory.FactoryBean
        Returns:
        Returns target class
      • isSingleton

        public boolean isSingleton()
        Specified by:
        isSingleton in interface org.springframework.beans.factory.FactoryBean
        Returns:
        Returns true always
      • getObject

        public Object getObject()
                         throws Exception
        Replaces the
        Specified by:
        getObject in interface org.springframework.beans.factory.FactoryBean
        Throws:
        Exception