FactoryBean
參考FactoryBean(一)和FactoryBean(二),進行總結
FactoryBean
作用
自定義Bean的建立過程
定義
public interface FactoryBean<T> {
/**
* Return an instance (possibly shared or independent) of the object
* managed by this factory.
* <p>As with a {@link BeanFactory}, this allows support for both the
* Singleton and Prototype design pattern.
* <p>If this FactoryBean is not fully initialized yet at the time of
* the call (for example because it is involved in a circular reference),
* throw a corresponding {@link FactoryBeanNotInitializedException}.
* <p>As of Spring 2.0, FactoryBeans are allowed to return {@code null}
* objects. The factory will consider this as normal value to be used; it
* will not throw a FactoryBeanNotInitializedException in this case anymore.
* FactoryBean implementations are encouraged to throw
* FactoryBeanNotInitializedException themselves now, as appropriate.
* @return an instance of the bean (can be {@code null})
* @throws Exception in case of creation errors
* @see FactoryBeanNotInitializedException
*/
@Nullable
T getObject() throws Exception;
/**
* Return the type of object that this FactoryBean creates,
* or {@code null} if not known in advance.
* <p>This allows one to check for specific types of beans without
* instantiating objects, for example on autowiring.
* <p>In the case of implementations that are creating a singleton object,
* this method should try to avoid singleton creation as far as possible;
* it should rather estimate the type in advance.
* For prototypes, returning a meaningful type here is advisable too.
* <p>This method can be called <i>before</i> this FactoryBean has
* been fully initialized. It must not rely on state created during
* initialization; of course, it can still use such state if available.
* <p><b>NOTE:</b> Autowiring will simply ignore FactoryBeans that return
* {@code null} here. Therefore it is highly recommended to implement
* this method properly, using the current state of the FactoryBean.
* @return the type of object that this FactoryBean creates,
* or {@code null} if not known at the time of the call
* @see ListableBeanFactory#getBeansOfType
*/
@Nullable
Class<?> getObjectType();
/**
* Is the object managed by this factory a singleton? That is,
* will {@link #getObject()} always return the same object
* (a reference that can be cached)?
* <p><b>NOTE:</b> If a FactoryBean indicates to hold a singleton object,
* the object returned from {@code getObject()} might get cached
* by the owning BeanFactory. Hence, do not return {@code true}
* unless the FactoryBean always exposes the same reference.
* <p>The singleton status of the FactoryBean itself will generally
* be provided by the owning BeanFactory; usually, it has to be
* defined as singleton there.
* <p><b>NOTE:</b> This method returning {@code false} does not
* necessarily indicate that returned objects are independent instances.
* An implementation of the extended {@link SmartFactoryBean} interface
* may explicitly indicate independent instances through its
* {@link SmartFactoryBean#isPrototype()} method. Plain {@link FactoryBean}
* implementations which do not implement this extended interface are
* simply assumed to always return independent instances if the
* {@code isSingleton()} implementation returns {@code false}.
* <p>The default implementation returns {@code true}, since a
* {@code FactoryBean} typically manages a singleton instance.
* @return whether the exposed object is a singleton
* @see #getObject()
* @see SmartFactoryBean#isPrototype()
*/
default boolean isSingleton() {
return true;
}
}
相關文章
- FactoryBean有什麼用Bean
- BeanFactory和FactoryBean區別Bean
- Spring容器系列-FactoryBean使用/原理SpringBean
- Spring 中的 BeanFactory 與 FactoryBeanSpringBean
- 如何使用Spring的FactoryBean介面SpringBean
- MyBatis-09-FactoryBean的問題MyBatisBean
- Spring Framework 元件註冊 之 FactoryBeanSpringFramework元件Bean
- spring中FactoryBean是什麼beanSpringBean
- spring中的FactoryBean與ObjectFactory的區別SpringBeanObject
- 【spring原始碼系列】之【FactoryBean型別的介面】Spring原始碼Bean型別
- 一文讀懂BeanFactory和FactoryBean區別Bean
- 聊聊Spring的FactoryBean其實沒那麼難SpringBean
- 【Java面試】Spring中 BeanFactory和FactoryBean的區別Java面試SpringBean
- 掌握Spring中的beanfactory與factorybean有什麼好處?SpringBean
- Spring中的BeanFactory與FactoryBean看這一篇就夠了SpringBean
- SpringBoot應用篇之FactoryBean及代理實現SPI機制示例Spring BootBean
- Spring擴充介面之FactoryBean,我們來看看其原始碼實現SpringBean原始碼
- 【帶你手擼Spring】沒有哪個框架開發,能離開 Spring 的 FactoryBean!Spring框架Bean
- 一次性講清楚spring中bean的生命週期之二:FactoryBean的前世今生SpringBean
- 【String註解驅動開發】面試官讓我說說:如何使用FactoryBean向Spring容器中註冊bean?面試BeanSpring
- 一文帶你解讀Spring5原始碼解析 IOC之開啟Bean的載入,以及FactoryBean和BeanFactory的區別。Spring原始碼Bean