Package org.alfresco.util.bean
Class HierarchicalBeanLoader
java.lang.Object
org.alfresco.util.bean.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.MySQLDialectand
dialectBaseClass = org.hibernate.dialect.DialectFor dialect org.hibernate.dialect.MySQLInnoDBDialect the following will be returned:
contentDAO.bean.dialect == BEAN 2 propertyValueDAO.bean.dialect == BEAN 4For dialectorg.hibernate.dialect.MySQLDBDialect the following will be returned:
contentDAO.bean.dialect == BEAN 1 propertyValueDAO.bean.dialect == BEAN 4For 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
-
Field Summary
FieldsFields inherited from interface org.springframework.beans.factory.FactoryBean
OBJECT_TYPE_ATTRIBUTE
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
Replaces theClass<?>
boolean
void
setApplicationContext
(org.springframework.context.ApplicationContext ctx) The application context that this bean factory serves.void
setDialectBaseClass
(String className) Set the class to be used during hierarchical dialect replacement.void
setDialectClass
(String className) void
setTargetBeanName
(String targetBeanName) void
setTargetClass
(Class<?> targetClass) Set the target class that will be returned bygetObjectType()
-
Field Details
-
DEFAULT_DIALECT_PLACEHOLDER
- See Also:
-
DEFAULT_DIALECT_REGEX
- See Also:
-
-
Constructor Details
-
HierarchicalBeanLoader
public HierarchicalBeanLoader()Create a new HierarchicalResourceLoader.
-
-
Method Details
-
setApplicationContext
public void setApplicationContext(org.springframework.context.ApplicationContext ctx) The application context that this bean factory serves.- Specified by:
setApplicationContext
in interfaceorg.springframework.context.ApplicationContextAware
-
setTargetBeanName
- Parameters:
targetBeanName
- the name of the target bean to return, including theDEFAULT_DIALECT_PLACEHOLDER
where the specific dialect must be replaced.
-
setTargetClass
Set the target class that will be returned bygetObjectType()
- Parameters:
targetClass
- the type that this factory returns
-
setDialectBaseClass
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
-
afterPropertiesSet
- Specified by:
afterPropertiesSet
in interfaceorg.springframework.beans.factory.InitializingBean
- Throws:
Exception
-
getObjectType
- Specified by:
getObjectType
in interfaceorg.springframework.beans.factory.FactoryBean
- Returns:
- Returns
target class
-
isSingleton
public boolean isSingleton()- Specified by:
isSingleton
in interfaceorg.springframework.beans.factory.FactoryBean
- Returns:
- Returns true always
-
getObject
Replaces the- Specified by:
getObject
in interfaceorg.springframework.beans.factory.FactoryBean
- Throws:
Exception
-