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 Details

    • logger

      protected final org.apache.commons.logging.Log logger
      Logger available to subclasses.
    • targetObject

      protected @Nullable 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
      Returns:
      the type of targets returned by this TargetSource
    • getTarget

      public final @Nullable 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
      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 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.

      Returns:
      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).

      Returns:
      the fresh target object