## org.springframework.beans.factory.config
Class ProviderCreatingFactoryBean

    java.lang.Object
      org.springframework.beans.factory.config.AbstractFactoryBean<javax.inject.Provider>
          org.springframework.beans.factory.config.ProviderCreatingFactoryBean

All Implemented Interfaces:
  BeanClassLoaderAware, BeanFactoryAware, DisposableBean, FactoryBean<javax.inject.Provider>, InitializingBean

    public class ProviderCreatingFactoryBean

extends AbstractFactoryBean<javax.inject.Provider>

A `FactoryBean` implementation that returns a value which is a JSR-330 `Provider` that in turn returns a bean sourced from a `BeanFactory`.

This is basically a JSR-330 compliant variant of Spring's good old `ObjectFactoryCreatingFactoryBean`. It can be used for traditional external dependency injection configuration that targets a property or constructor argument of type `javax.inject.Provider`, as an alternative to JSR-330's `@Inject` annotation-driven approach.

Since:
  3.0.2
Author:
  Juergen Hoeller
See Also:
  `Provider`, `ObjectFactoryCreatingFactoryBean`

Field Summary

Fields inherited from class org.springframework.beans.factory.config.AbstractFactoryBean
`logger`

Constructor Summary
`ProviderCreatingFactoryBean()`

Method Summary
`void` `afterPropertiesSet()` Eagerly create the singleton instance, if necessary.
`protected javax.inject.Provider` `createInstance()` Template method that subclasses must override to construct the object returned by this factory.
`Class` `getObjectType()` This abstract method declaration mirrors the method in the FactoryBean interface, for a consistent offering of abstract template methods.
`void` `setTargetBeanName(String targetBeanName)` Set the name of the target bean.

Methods inherited from class org.springframework.beans.factory.config.AbstractFactoryBean
`destroy, destroyInstance, getBeanFactory, getBeanTypeConverter, getEarlySingletonInterfaces, getObject, isSingleton, setBeanClassLoader, setBeanFactory, setSingleton`

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

Constructor Detail

### ProviderCreatingFactoryBean

    public ProviderCreatingFactoryBean()

Method Detail

### setTargetBeanName

    public void setTargetBeanName(String targetBeanName)

  Set the name of the target bean.

  The target does not have to be a non-singleton bean, but realisticially always will be (because if the target bean were a singleton, then said singleton bean could simply be injected straight into the dependent object, thus obviating the need for the extra level of indirection afforded by this factory approach).

### afterPropertiesSet

    public void afterPropertiesSet()
                            throws Exception

  Description copied from class: `AbstractFactoryBean`
  Eagerly create the singleton instance, if necessary.

  Specified by:
    `afterPropertiesSet` in interface `InitializingBean`
  Overrides:
    `afterPropertiesSet` in class `AbstractFactoryBean<javax.inject.Provider>`
  Throws:
    `Exception` - in the event of misconfiguration (such as failure to set an essential property) or if initialization fails.

### getObjectType

    public Class getObjectType()

  Description copied from class: `AbstractFactoryBean`
  This abstract method declaration mirrors the method in the FactoryBean interface, for a consistent offering of abstract template methods.

  Specified by:
    `getObjectType` in interface `FactoryBean<javax.inject.Provider>`
  Specified by:
    `getObjectType` in class `AbstractFactoryBean<javax.inject.Provider>`
  Returns:
    the type of object that this FactoryBean creates, or `null` if not known at the time of the call
  See Also:
    `FactoryBean.getObjectType()`

### createInstance

    protected javax.inject.Provider createInstance()

  Description copied from class: `AbstractFactoryBean`
  Template method that subclasses must override to construct the object returned by this factory.

  Invoked on initialization of this FactoryBean in case of a singleton; else, on each `AbstractFactoryBean.getObject()` call.

  Specified by:
    `createInstance` in class `AbstractFactoryBean<javax.inject.Provider>`
  Returns:
    the object returned by this factory
  See Also:
    `AbstractFactoryBean.getObject()`