T - the bean typepublic interface SmartFactoryBean<T> extends FactoryBean<T>
FactoryBean interface. Implementations may
 indicate whether they always return independent instances, for the
 case where their FactoryBean.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 FactoryBean.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.
isPrototype(), 
FactoryBean.isSingleton()OBJECT_TYPE_ATTRIBUTE| Modifier and Type | Method and Description | 
|---|---|
| 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)? | 
| default boolean | isPrototype()Is the object managed by this factory a prototype? That is,
 will  FactoryBean.getObject()always return an independent instance? | 
getObject, getObjectType, isSingletondefault boolean isPrototype()
FactoryBean.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 FactoryBean.isSingleton().
 
The default implementation returns false.
FactoryBean.getObject(), 
FactoryBean.isSingleton()default boolean isEagerInit()
A standard FactoryBean is not expected to initialize eagerly:
 Its FactoryBean.getObject() will only be called for actual access, even
 in case of a singleton object. Returning true from this
 method suggests that FactoryBean.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.
ConfigurableListableBeanFactory.preInstantiateSingletons()