Spring中的BeanFactory對象實(shí)例化工廠詳解
BeanFactory對象實(shí)例化工廠
BeanFactory及其子類是Spring IOC容器中最重要的一個類,BeanFactory由類名可以看出其是一個Bean工廠類,其實(shí)它確實(shí)是一個Bean工廠類,完成Bean的初始化操作。
Bean的初始化操作還是一個比較麻煩的操作,首先根據(jù)spring注入配置將bean初始化為單例或者原型,其次需要根據(jù)Bean的屬性配置來完成Bean參數(shù)的注入配置,還有要解決單例模式下Bean的循環(huán)依賴的問題,原型模式下bean的循環(huán)依賴會直接報(bào)錯。
BeanFactory接口及其實(shí)現(xiàn)類:

BeanFactory接口繼承關(guān)系:

BeanFactory 是Spring bean容器的根接口.提供獲取bean,是否包含bean,是否單例與原型,獲取bean類型,bean 別名的api.
- AutowireCapableBeanFactory 添加集成其他框架功能.如果集成WebWork則可以使用Spring對Actions等進(jìn)行管理.
- HierarchicalBeanFactory 提供父容器的訪問功能
- ConfigurableBeanFactory 如名,提供factory的配置功能,眼花繚亂好多api
- ConfigurableListableBeanFactory 集大成者,提供解析,修改bean定義,并與初始化單例.
- ListableBeanFactory 提供容器內(nèi)bean實(shí)例的枚舉功能.這邊不會考慮父容器內(nèi)的實(shí)例.
BeanFactory提供的接口如下:
public interface BeanFactory {
String FACTORY_BEAN_PREFIX = "&";
//根據(jù)名稱獲取bean
Object getBean(String name) throws BeansException;
//根據(jù)名稱及類型獲取類
<T> T getBean(String name, Class<T> requiredType) throws BeansException;
//根據(jù)類型獲取類
<T> T getBean(Class<T> requiredType) throws BeansException;
Object getBean(String name, Object... args) throws BeansException;
<T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
boolean containsBean(String name);
//單例判斷
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
//原型判斷
boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
//類型判斷
boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;
boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;
Class<?> getType(String name) throws NoSuchBeanDefinitionException;
String[] getAliases(String name);
}總結(jié):接下來我們通過幾篇博客來介紹BeanFactory所提供的Bean實(shí)例化操作。
到此這篇關(guān)于Spring中的BeanFactory對象實(shí)例化工廠詳解的文章就介紹到這了,更多相關(guān)BeanFactory對象實(shí)例化工廠內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring中@Controller和@RestController的區(qū)別詳解
這篇文章主要介紹了Spring中@Controller和@RestController的區(qū)別詳解,@RestController?是?@Controller?和?@ResponseBody?的結(jié)合體,單獨(dú)使用?@RestController?的效果與?@Controller?和?@ResponseBody?二者同時使用的效果相同,需要的朋友可以參考下2023-10-10
mybatis水平分表實(shí)現(xiàn)動態(tài)表名的項(xiàng)目實(shí)例
本文主要介紹了mybatis水平分表實(shí)現(xiàn)動態(tài)表名的項(xiàng)目實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Spring AOP面向切面編程實(shí)現(xiàn)原理方法詳解
這篇文章主要介紹了Spring AOP面向切面編程實(shí)現(xiàn)原理方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08

