org.springframework.orm.hibernate.support
Class DependencyInjectionAspectSupport

java.lang.Object
  extended by org.springframework.orm.hibernate.support.DependencyInjectionAspectSupport
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.InitializingBean
Direct Known Subclasses:
DependencyInjectionInterceptorFactoryBean

public abstract class DependencyInjectionAspectSupport
extends java.lang.Object
implements org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.BeanFactoryAware

Convenient superclass for aspects/persistence API configuration classes that should be able to autowire objects into a factory.

There are two ways of doing this: by mapping managed classes to prototype bean definitions in the factory; and by identifying classes of which instances should be autowired into the factory using the autowiring capables of AutowireCapableBeanFactory. If your managed class implements Spring lifecycle interfaces such as BeanFactoryAware or ApplicationContextAware, you must use the former method. With the latter method, only properties will be set, based on automatic satisfaction of dependencies from other beans (singleton or non-singleton) defined in the factory.

Could also use attributes on persistent classes to identify those eligible for autowiring, or even the prototype bean name.

Since:
1.2
Author:
Rod Johnson
See Also:
AutowireCapableBeanFactory

Nested Class Summary
protected  class DependencyInjectionAspectSupport.NoAutowiringConfigurationForClassException
           
 
Field Summary
protected  java.util.List autowireByTypeClasses
          List of Class
protected  org.apache.log4j.Logger log
           
 
Constructor Summary
DependencyInjectionAspectSupport()
           
 
Method Summary
 void addAutowireByNameClass(java.lang.Class clazz)
           
 void addAutowireByTypeClass(java.lang.Class clazz)
           
 void addManagedClassToPrototypeMapping(java.lang.Class clazz, java.lang.String beanName)
           
 void afterPropertiesSet()
          Check that mandatory properties were set
protected  void autowireProperties(java.lang.Object o)
          Subclasses can call this to autowire properties on an existing object
protected  java.lang.Object createAndConfigure(java.lang.Class clazz)
          Subclasses will call this to create an object of the requisite class
 java.util.List getAutowireByNameClasses()
          Return classes autowired by name
 java.util.List getAutowireByTypeClasses()
          Return classes autowired by type
protected  org.springframework.beans.factory.BeanFactory getBeanFactory()
          Expose the owning bean factory to subclasses.
 int getDefaultAutowireMode()
           
 java.util.Map getManagedClassToPrototypeNames()
          Return a Map of managed classes to prototype names
 void setAutowireByNameClasses(java.util.List autowireByNameClasses)
          Set the Classes or class names that will be autowired by name
 void setAutowireByTypeClasses(java.util.List autowireByTypeClasses)
          Set the Classes or class names that will be autowired by type
 void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
           
 void setDefaultAutowireMode(int mode)
          Convenient property enabling autowiring of all instances.
 void setManagedClassNamesToPrototypeNames(java.util.Properties persistentClassBeanNames)
          Property key is class FQN, value is prototype name to use to obtain a new instance
protected  void validateConfiguration()
           
protected abstract  void validateProperties()
          Subclasses should implement this to validate their configuration
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

protected final org.apache.log4j.Logger log

autowireByTypeClasses

protected java.util.List autowireByTypeClasses
List of Class

Constructor Detail

DependencyInjectionAspectSupport

public DependencyInjectionAspectSupport()
Method Detail

getDefaultAutowireMode

public int getDefaultAutowireMode()
Returns:
Returns the autowireAll.

setDefaultAutowireMode

public void setDefaultAutowireMode(int mode)
Convenient property enabling autowiring of all instances. We might want this in an AspectJ aspect subclass, for example, relying on the AspectJ aspect to target the advice.

Parameters:
mode - The autowireAll to set.

setBeanFactory

public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
Specified by:
setBeanFactory in interface org.springframework.beans.factory.BeanFactoryAware

getBeanFactory

protected org.springframework.beans.factory.BeanFactory getBeanFactory()
Expose the owning bean factory to subclasses. Call only after initialization is complete.

Returns:
the owning bean factory. Cannot be null in valid use of this class.

setAutowireByTypeClasses

public void setAutowireByTypeClasses(java.util.List autowireByTypeClasses)
Set the Classes or class names that will be autowired by type

Parameters:
autowireByTypeClasses - list of Class or String classname

getAutowireByTypeClasses

public java.util.List getAutowireByTypeClasses()
Return classes autowired by type

Returns:
list of Class

addAutowireByTypeClass

public void addAutowireByTypeClass(java.lang.Class clazz)

setAutowireByNameClasses

public void setAutowireByNameClasses(java.util.List autowireByNameClasses)
Set the Classes or class names that will be autowired by name

Parameters:
autowireByNameClasses - list of Class or String classname

getAutowireByNameClasses

public java.util.List getAutowireByNameClasses()
Return classes autowired by name

Returns:
list of Class

addAutowireByNameClass

public void addAutowireByNameClass(java.lang.Class clazz)

setManagedClassNamesToPrototypeNames

public void setManagedClassNamesToPrototypeNames(java.util.Properties persistentClassBeanNames)
Property key is class FQN, value is prototype name to use to obtain a new instance

Parameters:
persistentClassBeanNames -

getManagedClassToPrototypeNames

public java.util.Map getManagedClassToPrototypeNames()
Return a Map of managed classes to prototype names

Returns:
Map with key being FQN and value prototype bean name to use for that class

addManagedClassToPrototypeMapping

public void addManagedClassToPrototypeMapping(java.lang.Class clazz,
                                              java.lang.String beanName)

afterPropertiesSet

public final void afterPropertiesSet()
Check that mandatory properties were set

Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
See Also:
InitializingBean.afterPropertiesSet()

validateProperties

protected abstract void validateProperties()
Subclasses should implement this to validate their configuration


validateConfiguration

protected void validateConfiguration()

autowireProperties

protected void autowireProperties(java.lang.Object o)
                           throws DependencyInjectionAspectSupport.NoAutowiringConfigurationForClassException,
                                  org.springframework.beans.BeansException
Subclasses can call this to autowire properties on an existing object

Parameters:
o -
Throws:
org.springframework.beans.BeansException
DependencyInjectionAspectSupport.NoAutowiringConfigurationForClassException

createAndConfigure

protected java.lang.Object createAndConfigure(java.lang.Class clazz)
                                       throws DependencyInjectionAspectSupport.NoAutowiringConfigurationForClassException
Subclasses will call this to create an object of the requisite class

Parameters:
clazz -
Returns:
Throws:
DependencyInjectionAspectSupport.NoAutowiringConfigurationForClassException


Copyright © 2013 Atlassian Software Systems Pty Ltd. All Rights Reserved.