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
-
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.final Object
Return a target instance.Class<?>
Return the type of targets returned by thisTargetSource
.boolean
isStatic()
Not static.final void
refresh()
Refresh the underlying target object.void
releaseTarget
(Object object) No need to release target.protected boolean
Determine whether a refresh is required.void
setRefreshCheckDelay
(long refreshCheckDelay) Set the delay between refresh checks, in milliseconds.
-
Field Details
-
logger
Logger 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
-
isStatic
public boolean isStatic()Not static.- Specified by:
isStatic
in interfaceTargetSource
- Returns:
true
if the target is immutable- See Also:
-
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
-
releaseTarget
No need to release target.- Specified by:
releaseTarget
in interfaceTargetSource
- Parameters:
object
- object obtained from a call toTargetSource.getTarget()
-
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
-