Class AbstractRefreshableTargetSource
java.lang.Object
org.springframework.aop.target.dynamic.AbstractRefreshableTargetSource
- All Implemented Interfaces:
Refreshable
,TargetClassAware
,TargetSource
- Direct Known Subclasses:
BeanFactoryRefreshableTargetSource
public abstract class AbstractRefreshableTargetSource
extends Object
implements TargetSource, Refreshable
Abstract
TargetSource
implementation that
wraps a refreshable target object. Subclasses can determine whether a
refresh is required, and need to provide fresh target objects.
Implements the Refreshable
interface in order to allow for
explicit control over the refresh status.
- Since:
- 2.0
- Author:
- Rod Johnson, Rob Harrop, Juergen Hoeller
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected final org.apache.commons.logging.Log
Logger available to subclasses. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected abstract Object
Obtain a fresh target object.long
Return the last time an actual refresh happened (as timestamp).long
Return the number of actual refreshes since startup.Return a target instance.Class<?>
Return the type of targets returned by thisTargetSource
.final void
refresh()
Refresh the underlying target object.protected boolean
Determine whether a refresh is required.void
setRefreshCheckDelay
(long refreshCheckDelay) Set the delay between refresh checks, in milliseconds.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 loggerLogger available to subclasses. -
targetObject
-
-
Constructor Details
-
AbstractRefreshableTargetSource
public AbstractRefreshableTargetSource()
-
-
Method Details
-
setRefreshCheckDelay
public void setRefreshCheckDelay(long refreshCheckDelay) Set the delay between refresh checks, in milliseconds. Default is -1, indicating no refresh checks at all.Note that an actual refresh will only happen when
requiresRefresh()
returnstrue
. -
getTargetClass
Description copied from interface:TargetSource
Return the type of targets returned by thisTargetSource
.Can return
null
, although certain usages of aTargetSource
might just work with a predetermined target class.- Specified by:
getTargetClass
in interfaceTargetClassAware
- Specified by:
getTargetClass
in interfaceTargetSource
- Returns:
- the type of targets returned by this
TargetSource
-
getTarget
Description copied from interface:TargetSource
Return a target instance. Invoked immediately before the AOP framework calls the "target" of an AOP method invocation.- Specified by:
getTarget
in interfaceTargetSource
- Returns:
- the target object which contains the joinpoint,
or
null
if there is no actual target instance
-
refresh
public final void refresh()Description copied from interface:Refreshable
Refresh the underlying target object.- Specified by:
refresh
in interfaceRefreshable
-
getRefreshCount
public long getRefreshCount()Description copied from interface:Refreshable
Return the number of actual refreshes since startup.- Specified by:
getRefreshCount
in interfaceRefreshable
-
getLastRefreshTime
public long getLastRefreshTime()Description copied from interface:Refreshable
Return the last time an actual refresh happened (as timestamp).- Specified by:
getLastRefreshTime
in interfaceRefreshable
-
requiresRefresh
protected boolean requiresRefresh()Determine whether a refresh is required. Invoked for each refresh check, after the refresh check delay has elapsed.The default implementation always returns
true
, triggering a refresh every time the delay has elapsed. To be overridden by subclasses with an appropriate check of the underlying target resource.- Returns:
- whether a refresh is required
-
freshTarget
Obtain a fresh target object.Only invoked if a refresh check has found that a refresh is required (that is,
requiresRefresh()
has returnedtrue
).- Returns:
- the fresh target object
-