Package org.springframework.aop.target
Class AbstractLazyCreationTargetSource
java.lang.Object
org.springframework.aop.target.AbstractLazyCreationTargetSource
- All Implemented Interfaces:
TargetClassAware,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 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract ObjectSubclasses 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.Class<?>This default implementation returnsnullif the target isnull(it is hasn't yet been initialized), or the target class if the target has already been initialized.booleanReturn whether the lazy target object of this TargetSource has already been fetched.booleanisStatic()Will all calls toTargetSource.getTarget()return the same object?voidreleaseTarget(Object target) Release the given target object obtained from theTargetSource.getTarget()method, if any.
-
Field Details
-
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
This default implementation returnsnullif the target isnull(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:
getTargetClassin interfaceTargetClassAware- Specified by:
getTargetClassin interfaceTargetSource- Returns:
- the type of targets returned by this
TargetSource - See Also:
-
isStatic
public boolean isStatic()Description copied from interface:TargetSourceWill all calls toTargetSource.getTarget()return the same object?In that case, there will be no need to invoke
TargetSource.releaseTarget(Object), and the AOP framework can cache the return value ofTargetSource.getTarget().- Specified by:
isStaticin interfaceTargetSource- Returns:
trueif the target is immutable- See Also:
-
getTarget
Returns the lazy-initialized target object, creating it on-the-fly if it doesn't exist already.- Specified by:
getTargetin interfaceTargetSource- Returns:
- the target object which contains the joinpoint,
or
nullif there is no actual target instance - Throws:
Exception- if the target object can't be resolved- See Also:
-
releaseTarget
Description copied from interface:TargetSourceRelease the given target object obtained from theTargetSource.getTarget()method, if any.- Specified by:
releaseTargetin interfaceTargetSource- Parameters:
target- object obtained from a call toTargetSource.getTarget()- Throws:
Exception- if the object can't be released
-
createObject
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
-