Top Description Fields Methods
org.springframework.beans.factory

public Interface SmartFactoryBean<T>

extends FactoryBean<T>
Type Parameters
<T>
the bean type

Extension of the FactoryBean interface. Implementations may indicate whether they always return independent instances, for the case where their isSingleton() implementation returning false does not clearly indicate independent instances.

Plain FactoryBean implementations which do not implement this extended interface are simply assumed to always return independent instances if their isSingleton() implementation returns false; the exposed object is only accessed on demand.

Note

This interface is a special purpose interface, mainly for internal use within the framework and within collaborating frameworks. In general, application-provided FactoryBeans should simply implement the plain FactoryBean interface. New methods might be added to this extended interface even in point releases.

Author
Juergen Hoeller
Since
2.0.3
See Also
isPrototype(), isSingleton()

Field Summary

Inherited from org.springframework.beans.factory.FactoryBean:
OBJECT_TYPE_ATTRIBUTE

Method Summary

Modifier and TypeMethod and Description
public default boolean

Returns:

whether eager initialization applies
isEagerInit
()

Does this FactoryBean expect eager initialization, that is, eagerly initialize itself as well as expect eager initialization of its singleton object (if any)?

public default boolean

Returns:

whether the exposed object is a prototype
isPrototype
()

Is the object managed by this factory a prototype?

Inherited from org.springframework.beans.factory.FactoryBean:
getObjectgetObjectTypeisSingleton

Method Detail

isEagerInitback to summary
public default boolean isEagerInit()

Does this FactoryBean expect eager initialization, that is, eagerly initialize itself as well as expect eager initialization of its singleton object (if any)?

A standard FactoryBean is not expected to initialize eagerly: Its getObject() will only be called for actual access, even in case of a singleton object. Returning true from this method suggests that getObject() should be called eagerly, also applying post-processors eagerly. This may make sense in case of a singleton object, in particular if post-processors expect to be applied on startup.

The default implementation returns false.

Returns:boolean

whether eager initialization applies

See Also
org.springframework.beans.factory.config.ConfigurableListableBeanFactory#preInstantiateSingletons()
isPrototypeback to summary
public default boolean isPrototype()

Is the object managed by this factory a prototype? That is, will getObject() always return an independent instance?

The prototype status of the FactoryBean itself will generally be provided by the owning BeanFactory; usually, it has to be defined as singleton there.

This method is supposed to strictly check for independent instances; it should not return true for scoped objects or other kinds of non-singleton, non-independent objects. For this reason, this is not simply the inverted form of isSingleton().

The default implementation returns false.

Returns:boolean

whether the exposed object is a prototype

See Also
getObject(), isSingleton()