Class AbstractRefreshableTargetSource

All Implemented Interfaces:
Refreshable, TargetClassAware, TargetSource
Direct Known Subclasses:

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.

Rod Johnson, Rob Harrop, Juergen Hoeller
See Also:
  • Field Details

    • logger

      protected final Log logger
      Logger available to subclasses.
    • targetObject

      @Nullable protected Object 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() returns true.

    • getTargetClass

      public Class<?> getTargetClass()
      Description copied from interface: TargetSource
      Return the type of targets returned by this TargetSource.

      Can return null, although certain usages of a TargetSource might just work with a predetermined target class.

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

      @Nullable public final Object 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 interface TargetSource
      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 interface Refreshable
    • getRefreshCount

      public long getRefreshCount()
      Description copied from interface: Refreshable
      Return the number of actual refreshes since startup.
      Specified by:
      getRefreshCount in interface Refreshable
    • getLastRefreshTime

      public long getLastRefreshTime()
      Description copied from interface: Refreshable
      Return the last time an actual refresh happened (as timestamp).
      Specified by:
      getLastRefreshTime in interface Refreshable
    • 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.

      whether a refresh is required
    • freshTarget

      protected abstract Object freshTarget()
      Obtain a fresh target object.

      Only invoked if a refresh check has found that a refresh is required (that is, requiresRefresh() has returned true).

      the fresh target object