## org.springframework.aop.target
Class AbstractBeanFactoryBasedTargetSource

    java.lang.Object
      org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource

All Implemented Interfaces:
  Serializable, TargetClassAware, TargetSource, BeanFactoryAware

Direct Known Subclasses:
  AbstractPrototypeBasedTargetSource, LazyInitTargetSource, SimpleBeanTargetSource

    public abstract class AbstractBeanFactoryBasedTargetSource

extends Object
implements TargetSource, BeanFactoryAware, Serializable

Base class for `TargetSource` implementations that are based on a Spring `BeanFactory`, delegating to Spring-managed bean instances.

Subclasses can create prototype instances or lazily access a singleton target, for example. See `LazyInitTargetSource` and `AbstractPrototypeBasedTargetSource`'s subclasses for concrete strategies.

BeanFactory-based TargetSources are serializable. This involves disconnecting the current target and turning into a `SingletonTargetSource`.

Since:
  1.1.4
Author:
  Juergen Hoeller, Rod Johnson
See Also:
  `BeanFactory.getBean(java.lang.String)`, `LazyInitTargetSource`, `PrototypeTargetSource`, `ThreadLocalTargetSource`, `CommonsPoolTargetSource`, Serialized Form

Field Summary
`protected Log` `logger` Logger available to subclasses

Constructor Summary
`AbstractBeanFactoryBasedTargetSource()`

Method Summary
`protected void` `copyFrom(AbstractBeanFactoryBasedTargetSource other)` Copy configuration from the other AbstractBeanFactoryBasedTargetSource object.
`boolean` `equals(Object other)`
`BeanFactory` `getBeanFactory()` Return the owning BeanFactory.
`String` `getTargetBeanName()` Return the name of the target bean in the factory.
`Class` `getTargetClass()` Return the type of targets returned by this `TargetSource`.
`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.
`void` `setBeanFactory(BeanFactory beanFactory)` Set the owning BeanFactory.
`void` `setTargetBeanName(String targetBeanName)` Set the name of the target bean in the factory.
`void` `setTargetClass(Class targetClass)` Specify the target class explicitly, to avoid any kind of access to the target bean (for example, to avoid initialization of a FactoryBean instance).
`String` `toString()`
`protected Object` `writeReplace()` Replaces this object with a SingletonTargetSource on serialization.

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.springframework.aop.TargetSource
`getTarget`

Field Detail

### logger

    protected final Log logger

  Logger available to subclasses

Constructor Detail

### AbstractBeanFactoryBasedTargetSource

    public AbstractBeanFactoryBasedTargetSource()

Method Detail

### setTargetBeanName

    public void setTargetBeanName(String targetBeanName)

  Set the name of the target bean in the factory.

  The target bean should not be a singleton, else the same instance will always be obtained from the factory, resulting in the same behavior as provided by `SingletonTargetSource`.

  Parameters:
    `targetBeanName` - name of the target bean in the BeanFactory that owns this interceptor
  See Also:
    `SingletonTargetSource`

### getTargetBeanName

    public String getTargetBeanName()

  Return the name of the target bean in the factory.

### setTargetClass

    public void setTargetClass(Class targetClass)

  Specify the target class explicitly, to avoid any kind of access to the target bean (for example, to avoid initialization of a FactoryBean instance).

  Default is to detect the type automatically, through a `getType` call on the BeanFactory (or even a full `getBean` call as fallback).

### setBeanFactory

    public void setBeanFactory(BeanFactory beanFactory)
                        throws BeansException

  Set the owning BeanFactory. We need to save a reference so that we can use the `getBean` method on every invocation.

  Specified by:
    `setBeanFactory` in interface `BeanFactoryAware`
  Parameters:
    `beanFactory` - owning BeanFactory (never `null`). The bean can immediately call methods on the factory.
  Throws:
    `BeansException` - in case of initialization errors
  See Also:
    `BeanInitializationException`

### getBeanFactory

    public BeanFactory getBeanFactory()

  Return the owning BeanFactory.

### 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`

### isStatic

    public 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()`

### releaseTarget

    public void releaseTarget(Object target)
                       throws Exception

  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()`
  Throws:
    `Exception` - if the object can't be released

### copyFrom

    protected void copyFrom(AbstractBeanFactoryBasedTargetSource other)

  Copy configuration from the other AbstractBeanFactoryBasedTargetSource object. Subclasses should override this if they wish to expose it.

  Parameters:
    `other` - object to copy configuration from

### writeReplace

    protected Object writeReplace()
                           throws ObjectStreamException

  Replaces this object with a SingletonTargetSource on serialization. Protected as otherwise it won't be invoked for subclasses. (The `writeReplace()` method must be visible to the class being serialized.)

  With this implementation of this method, there is no need to mark non-serializable fields in this class or subclasses as transient.

  Throws:
    `ObjectStreamException`

### equals

    public boolean equals(Object other)

  Overrides:
    `equals` in class `Object`

### hashCode

    public int hashCode()

  Overrides:
    `hashCode` in class `Object`

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

Copyright © 2002-2008 The Spring Framework.