org.springframework.aop.target

## Class HotSwappableTargetSource

- java.lang.Object
- - org.springframework.aop.target.HotSwappableTargetSource

All Implemented Interfaces:
  Serializable, TargetClassAware, TargetSource

    public class HotSwappableTargetSource
    extends Object
    implements TargetSource, Serializable

`TargetSource` implementation that caches a local target object, but allows the target to be swapped while the application is running.

If configuring an object of this class in a Spring IoC container, use constructor injection.

This TargetSource is serializable if the target is at the time of serialization.

Author:
  Rod Johnson, Juergen Hoeller
See Also:
  Serialized Form

### Constructor Summary

Constructors
Constructor and Description
`HotSwappableTargetSource(Object initialTarget)` Create a new HotSwappableTargetSource with the given initial target object.

### Method Summary

Methods
`boolean` `equals(Object other)` Two HotSwappableTargetSources are equal if the current target objects are equal.
`Object` `getTarget()` Return a target instance.
`Class<?>` `getTargetClass()` Return the type of the current target object.
`int` `hashCode()`
`boolean` `isStatic()` Will all calls to `TargetSource.getTarget()` return the same object?
`void` `releaseTarget(Object target)` Release the given target object obtained from the `TargetSource.getTarget()` method.
`Object` `swap(Object newTarget)` Swap the target, returning the old target object.
`String` `toString()`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### HotSwappableTargetSource

    public HotSwappableTargetSource(Object initialTarget)

Create a new HotSwappableTargetSource with the given initial target object.

Parameters:
  `initialTarget` - the initial target object

### Method Detail

#### getTargetClass

    public Class<?> getTargetClass()

Return the type of the current target object.

The returned type should usually be constant across all target objects.

Specified by:
  `getTargetClass` in interface `TargetClassAware`
Specified by:
  `getTargetClass` in interface `TargetSource`
Returns:
  the type of targets returned by this `TargetSource`

#### isStatic

    public final boolean isStatic()

Description copied from interface: `TargetSource`
Will all calls to `TargetSource.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 of `TargetSource.getTarget()`.

Specified by:
  `isStatic` in interface `TargetSource`
Returns:
  `true` if the target is immutable
See Also:
  `TargetSource.getTarget()`

#### getTarget

    public 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

#### releaseTarget

    public void releaseTarget(Object target)

Description copied from interface: `TargetSource`
Release the given target object obtained from the `TargetSource.getTarget()` method.

Specified by:
  `releaseTarget` in interface `TargetSource`
Parameters:
  `target` - object obtained from a call to `TargetSource.getTarget()`

#### swap

    public Object swap(Object newTarget)
                throws IllegalArgumentException

Swap the target, returning the old target object.

Parameters:
  `newTarget` - the new target object
Returns:
  the old target object
Throws:
  `IllegalArgumentException` - if the new target is invalid

#### equals

    public boolean equals(Object other)

Two HotSwappableTargetSources are equal if the current target objects are equal.

Overrides:
  `equals` in class `Object`

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `Object`

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`