Package org.springframework.beans.factory.config

# Class ProviderCreatingFactoryBean

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

All Implemented Interfaces:
  `Aware`, `BeanClassLoaderAware`, `BeanFactoryAware`, `DisposableBean`, `FactoryBean<Provider<Object>>`, `InitializingBean`

public class ProviderCreatingFactoryBean extends AbstractFactoryBean<Provider<Object>>
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 `jakarta.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`

### Fields inherited from interface org.springframework.beans.factory.FactoryBean

`OBJECT_TYPE_ATTRIBUTE`

## Constructor Summary

Constructors
Constructor
Description
`ProviderCreatingFactoryBean()`

## Method Summary

Modifier and Type
Method
Description
`void`
`afterPropertiesSet()`
Eagerly create the singleton instance, if necessary.
`protected Provider<Object>`
`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 Details

### ProviderCreatingFactoryBean

public ProviderCreatingFactoryBean()

## Method Details

### 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 realistically 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<Provider<Object>>`
Throws:
  `Exception` - in the event of misconfiguration (such as failure to set an essential property) or if initialization fails for any other reason

### 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<Provider<Object>>`
Specified by:
  `getObjectType` in class `AbstractFactoryBean<Provider<Object>>`
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 Provider<Object> 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<Provider<Object>>`
Returns:
  the object returned by this factory
See Also:
  - `AbstractFactoryBean.getObject()`