Package org.springframework.aop.target

# 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:
  - `isInitialized()`
  - `createObject()`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final org.apache.commons.logging.Log`
`logger`
Logger available to subclasses.

## Constructor Summary

Constructors
Constructor
Description
`AbstractLazyCreationTargetSource()`

## Method Summary

Modifier and Type
Method
Description
`protected abstract Object`
`createObject()`
Subclasses should implement this method to return the lazy initialized object.
`Object`
`getTarget()`
Returns the lazy-initialized target object, creating it on-the-fly if it doesn't exist already.
`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.
`boolean`
`isInitialized()`
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

@Nullable public 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:
  - `isInitialized()`

### 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()`

### 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