Class HierarchicalResourceLoader

  • All Implemented Interfaces:
    org.springframework.beans.factory.InitializingBean, org.springframework.core.io.ResourceLoader

    public class HierarchicalResourceLoader
    extends org.springframework.core.io.DefaultResourceLoader
    implements org.springframework.beans.factory.InitializingBean
    Locate resources by using a class hierarchy to drive the search. 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. A full resource search using Spring's DefaultResourceLoader is done at each point until the resource is found or the base of the class hierarchy is reached.

    For example assume classpath resources:

        RESOURCE 1: config/ibatis/org.hibernate.dialect.Dialect/SqlMap-DOG.xml
        RESOURCE 2: config/ibatis/org.hibernate.dialect.MySQLInnoDBDialect/SqlMap-DOG.xml
        RESOURCE 3: config/ibatis/org.hibernate.dialect.Dialect/SqlMap-CAT.xml
        RESOURCE 4: config/ibatis/org.hibernate.dialect.MySQLDialect/SqlMap-CAT.xml
     
    and
        dialectBaseClass = org.hibernate.dialect.Dialect
     
    For dialect org.hibernate.dialect.MySQLInnoDBDialect the following will be returned:
        config/ibatis/#resource.dialect#/SqlMap-DOG.xml == RESOURCE 2
        config/ibatis/#resource.dialect#/SqlMap-CAT.xml == RESOURCE 4
     
    For dialectorg.hibernate.dialect.MySQLDBDialect the following will be returned:
        config/ibatis/#resource.dialect#/SqlMap-DOG.xml == RESOURCE 1
        config/ibatis/#resource.dialect#/SqlMap-CAT.xml == RESOURCE 4
     
    For dialectorg.hibernate.dialect.Dialect the following will be returned:
        config/ibatis/#resource.dialect#/SqlMap-DOG.xml == RESOURCE 1
        config/ibatis/#resource.dialect#/SqlMap-CAT.xml == RESOURCE 3
     
    Since:
    3.2 (Mobile)
    Author:
    Derek Hulley
    • Constructor Detail

      • HierarchicalResourceLoader

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

      • 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
      • getResource

        public org.springframework.core.io.Resource getResource​(String location)
        Get a resource using the defined class hierarchy as a search path.
        Specified by:
        getResource in interface org.springframework.core.io.ResourceLoader
        Overrides:
        getResource in class org.springframework.core.io.DefaultResourceLoader
        Parameters:
        location - the location including a placeholder
        Returns:
        a resource found by successive searches using class name replacement, or null if not found.