Class AbstractLazyCreationTargetSource

java.lang.Object
org.springframework.aop.target.AbstractLazyCreationTargetSource
All Implemented Interfaces:
TargetClassAware, TargetSource

public abstract class AbstractLazyCreationTargetSource extends Object implements TargetSource
TargetSource implementation that will lazily create a user-managed object.

Creation of the lazy target object is controlled by the user by implementing the createObject() method. This TargetSource will invoke this method the first time the proxy is accessed.

Useful when you need to pass a reference to some dependency to an object but you don't actually want the dependency to be created until it is first used. A typical scenario for this is a connection to a remote resource.

Since:
1.2.4
Author:
Rob Harrop, Juergen Hoeller
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final org.apache.commons.logging.Log
    Logger available to subclasses.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected abstract Object
    Subclasses should implement this method to return the lazy initialized object.
    Returns the lazy-initialized target object, creating it on-the-fly if it doesn't exist already.
    This default implementation returns null if the target is null (it is hasn't yet been initialized), or the target class if the target has already been initialized.
    boolean
    Return whether the lazy target object of this TargetSource has already been fetched.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.springframework.aop.TargetSource

    isStatic, releaseTarget
  • Field Details

    • logger

      protected final org.apache.commons.logging.Log logger
      Logger available to subclasses.
  • Constructor Details

    • AbstractLazyCreationTargetSource

      public AbstractLazyCreationTargetSource()
  • Method Details

    • isInitialized

      public boolean isInitialized()
      Return whether the lazy target object of this TargetSource has already been fetched.
    • getTargetClass

      public @Nullable Class<?> getTargetClass()
      This default implementation returns null if the target is null (it is hasn't yet been initialized), or the target class if the target has already been initialized.

      Subclasses may wish to override this method in order to provide a meaningful value when the target is still null.

      Specified by:
      getTargetClass in interface TargetClassAware
      Specified by:
      getTargetClass in interface TargetSource
      Returns:
      the type of targets returned by this TargetSource
      See Also:
    • getTarget

      public Object getTarget() throws Exception
      Returns the lazy-initialized target object, creating it on-the-fly if it doesn't exist already.
      Specified by:
      getTarget in interface TargetSource
      Returns:
      the target object which contains the joinpoint, or null if there is no actual target instance
      Throws:
      Exception - if the target object can't be resolved
      See Also:
    • createObject

      protected abstract Object createObject() throws Exception
      Subclasses should implement this method to return the lazy initialized object. Called the first time the proxy is invoked.
      Returns:
      the created object
      Throws:
      Exception - if creation failed