org.springframework.aop.target.dynamic

## Class BeanFactoryRefreshableTargetSource

- java.lang.Object
- - org.springframework.aop.target.dynamic.AbstractRefreshableTargetSource
  - - org.springframework.aop.target.dynamic.BeanFactoryRefreshableTargetSource

All Implemented Interfaces:
  Refreshable, TargetClassAware, TargetSource

Direct Known Subclasses:
  RefreshableScriptTargetSource

    public class BeanFactoryRefreshableTargetSource
    extends AbstractRefreshableTargetSource

Refreshable TargetSource that fetches fresh target beans from a BeanFactory.

Can be subclassed to override `requiresRefresh()` to suppress unnecessary refreshes. By default, a refresh will be performed every time the "refreshCheckDelay" has elapsed.

Since:
  2.0
Author:
  Rob Harrop, Rod Johnson, Juergen Hoeller, Mark Fisher
See Also:
  `BeanFactory`, `AbstractRefreshableTargetSource.requiresRefresh()`, `AbstractRefreshableTargetSource.setRefreshCheckDelay(long)`

### Field Summary

### Fields inherited from class org.springframework.aop.target.dynamic.AbstractRefreshableTargetSource

`logger, targetObject`

### Constructor Summary

Constructors
Constructor and Description
`BeanFactoryRefreshableTargetSource(BeanFactory beanFactory, String beanName)` Create a new BeanFactoryRefreshableTargetSource for the given bean factory and bean name.

### Method Summary

Methods
`protected Object` `freshTarget()` Retrieve a fresh target object.
`protected Object` `obtainFreshBean(BeanFactory beanFactory, String beanName)` A template method that subclasses may override to provide a fresh target object for the given bean factory and bean name.

### Methods inherited from class org.springframework.aop.target.dynamic.AbstractRefreshableTargetSource

`getLastRefreshTime, getRefreshCount, getTarget, getTargetClass, isStatic, refresh, releaseTarget, requiresRefresh, setRefreshCheckDelay`

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

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

### Constructor Detail

#### BeanFactoryRefreshableTargetSource

    public BeanFactoryRefreshableTargetSource(BeanFactory beanFactory,
                                      String beanName)

Create a new BeanFactoryRefreshableTargetSource for the given bean factory and bean name.

Note that the passed-in BeanFactory should have an appropriate bean definition set up for the given bean name.

Parameters:
  `beanFactory` - the BeanFactory to fetch beans from
  `beanName` - the name of the target bean

### Method Detail

#### freshTarget

    protected final Object freshTarget()

Retrieve a fresh target object.

Specified by:
  `freshTarget` in class `AbstractRefreshableTargetSource`
Returns:
  the fresh target object

#### obtainFreshBean

    protected Object obtainFreshBean(BeanFactory beanFactory,
                         String beanName)

A template method that subclasses may override to provide a fresh target object for the given bean factory and bean name.

This default implementation fetches a new target bean instance from the bean factory.

See Also:
  `BeanFactory.getBean(java.lang.String)`