org.springframework.aop.framework.autoproxy.target

## 类 AbstractBeanFactoryBasedTargetSourceCreator

- java.lang.Object
- - org.springframework.aop.framework.autoproxy.target.AbstractBeanFactoryBasedTargetSourceCreator

- 所有已实现的接口:
    TargetSourceCreator, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.DisposableBean
  直接已知子类:
    LazyInitTargetSourceCreator, QuickTargetSourceCreator

      public abstract class AbstractBeanFactoryBasedTargetSourceCreator
      extends Object
      implements TargetSourceCreator, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.DisposableBean

  Convenient superclass for `TargetSourceCreator` implementations that require creating multiple instances of a prototype bean.

  Uses an internal BeanFactory to manage the target instances, copying the original bean definition to this internal factory. This is necessary because the original BeanFactory will just contain the proxy instance created through auto-proxying.

  Requires running in an `AbstractBeanFactory`.

  作者:
    Rod Johnson, Juergen Hoeller
  另请参阅:
    `AbstractBeanFactoryBasedTargetSource`, `AbstractBeanFactory`

- - ### 字段概要

    字段
    限定符和类型 | 字段和说明
    --- | ---
    `protected Log` | `logger`

  - ### 构造器概要

    构造器
    构造器和说明
    `AbstractBeanFactoryBasedTargetSourceCreator()`

  - ### 方法概要

    所有方法 实例方法 抽象方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `protected org.springframework.beans.factory.support.DefaultListableBeanFactory` | `buildInternalBeanFactory(org.springframework.beans.factory.config.ConfigurableBeanFactory containingFactory)` Build an internal BeanFactory for resolving target beans.
    `protected abstract AbstractBeanFactoryBasedTargetSource` | `createBeanFactoryBasedTargetSource(Class<?> beanClass, String beanName)` Subclasses must implement this method to return a new AbstractPrototypeBasedTargetSource if they wish to create a custom TargetSource for this bean, or `null` if they are not interested it in, in which case no special target source will be created.
    `void` | `destroy()` Destroys the internal BeanFactory on shutdown of the TargetSourceCreator.
    `protected org.springframework.beans.factory.BeanFactory` | `getBeanFactory()` Return the BeanFactory that this TargetSourceCreators runs in.
    `protected org.springframework.beans.factory.support.DefaultListableBeanFactory` | `getInternalBeanFactoryForBean(String beanName)` Return the internal BeanFactory to be used for the specified bean.
    `TargetSource` | `getTargetSource(Class<?> beanClass, String beanName)` Create a special TargetSource for the given bean, if any.
    `protected boolean` | `isPrototypeBased()` Return whether this TargetSourceCreator is prototype-based.
    `void` | `setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)`

    - ### 从类继承的方法 java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 字段详细资料

    - #### logger

          protected final Log logger

  - ### 构造器详细资料

    - #### AbstractBeanFactoryBasedTargetSourceCreator

          public AbstractBeanFactoryBasedTargetSourceCreator()

  - ### 方法详细资料

    - #### setBeanFactory

          public final void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)

      指定者:
        `setBeanFactory` 在接口中 `org.springframework.beans.factory.BeanFactoryAware`

    - #### getBeanFactory

          protected final org.springframework.beans.factory.BeanFactory getBeanFactory()

      Return the BeanFactory that this TargetSourceCreators runs in.

    - #### getTargetSource

          @Nullable
          public final TargetSource getTargetSource(Class<?> beanClass,
                                                               String beanName)

      从接口复制的说明: `TargetSourceCreator`
      Create a special TargetSource for the given bean, if any.
      指定者:
        `getTargetSource` 在接口中 `TargetSourceCreator`
      参数:
        `beanClass` - the class of the bean to create a TargetSource for
        `beanName` - the name of the bean
      返回:
        a special TargetSource or `null` if this TargetSourceCreator isn't interested in the particular bean

    - #### getInternalBeanFactoryForBean

          protected org.springframework.beans.factory.support.DefaultListableBeanFactory getInternalBeanFactoryForBean(String beanName)

      Return the internal BeanFactory to be used for the specified bean.
      参数:
        `beanName` - the name of the target bean
      返回:
        the internal BeanFactory to be used

    - #### buildInternalBeanFactory

          protected org.springframework.beans.factory.support.DefaultListableBeanFactory buildInternalBeanFactory(org.springframework.beans.factory.config.ConfigurableBeanFactory containingFactory)

      Build an internal BeanFactory for resolving target beans.
      参数:
        `containingFactory` - the containing BeanFactory that originally defines the beans
      返回:
        an independent internal BeanFactory to hold copies of some target beans

    - #### destroy

          public void destroy()

      Destroys the internal BeanFactory on shutdown of the TargetSourceCreator.
      指定者:
        `destroy` 在接口中 `org.springframework.beans.factory.DisposableBean`
      另请参阅:
        `getInternalBeanFactoryForBean(java.lang.String)`

    - #### isPrototypeBased

          protected boolean isPrototypeBased()

      Return whether this TargetSourceCreator is prototype-based. The scope of the target bean definition will be set accordingly.

      Default is "true".

      另请参阅:
        `BeanDefinition.isSingleton()`

    - #### createBeanFactoryBasedTargetSource

          @Nullable
          protected abstract AbstractBeanFactoryBasedTargetSource createBeanFactoryBasedTargetSource(Class<?> beanClass,
                                                                                                                String beanName)

      Subclasses must implement this method to return a new AbstractPrototypeBasedTargetSource if they wish to create a custom TargetSource for this bean, or `null` if they are not interested it in, in which case no special target source will be created. Subclasses should not call `setTargetBeanName` or `setBeanFactory` on the AbstractPrototypeBasedTargetSource: This class' implementation of `getTargetSource()` will do that.
      参数:
        `beanClass` - the class of the bean to create a TargetSource for
        `beanName` - the name of the bean
      返回:
        the AbstractPrototypeBasedTargetSource, or `null` if we don't match this