Spring IoC 下的 BeanFactory與 ApplicationContext

1.BeanFactory

BeanFactory是Spring容器下的一個接口


1111.png

由圖可以看出BeanFactory位于設(shè)計的最底層 所以我們可以看它提供了哪些方法

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package org.springframework.beans.factory;

import org.springframework.beans.BeansException;
import org.springframework.core.ResolvableType;

public interface BeanFactory {
    String FACTORY_BEAN_PREFIX = "&";

    Object getBean(String var1) throws BeansException;

    <T> T getBean(String var1, Class<T> var2) throws BeansException;

    Object getBean(String var1, Object... var2) throws BeansException;

    <T> T getBean(Class<T> var1) throws BeansException;

    <T> T getBean(Class<T> var1, Object... var2) throws BeansException;

    boolean containsBean(String var1);

    boolean isSingleton(String var1) throws NoSuchBeanDefinitionException;

    boolean isPrototype(String var1) throws NoSuchBeanDefinitionException;

    boolean isTypeMatch(String var1, ResolvableType var2) throws NoSuchBeanDefinitionException;

    boolean isTypeMatch(String var1, Class<?> var2) throws NoSuchBeanDefinitionException;

    Class<?> getType(String var1) throws NoSuchBeanDefinitionException;

    String[] getAliases(String var1);
}

getBean:對應(yīng)了多個方法來獲取給SpringIoC容器的bean
1按照類型獲取bean

bean=(Bean)factory.getBean(Bean.class);

注意要在Spring中只配置一種這種類型的實例
2根據(jù)名字拿bean

bean=(Bean)factory.getBean(" beanName");

3.根據(jù)類型跟名字拿bean(推薦使用這種方式獲取bean)

bean=(Bean)factory.getBean(" beanName",Bean.class);

isSingleton 判斷是否為單例 ture 表示Bean為單例 false則為多例
isPrototype 判斷是否為多例 相反

2.ApplicationContext

.ApplicationContext為BeanFactory的一個子接口,他繼承了許多的接口
因此他的功能較BeanFactory更為強(qiáng)大
.ApplicationContext常見的實現(xiàn)類
1.ClassPathXmlApplicationContext
讀取.classpath中的資源

 ApplicationContext as=new ClassPathXmlApplicationContext("beans.xml");

2.FileSystemXmlApplicationContext
讀取指定路徑的資源

 ApplicationContext as=newFileSystemXmlApplicationContext("e:/beans.xml");

3.XmlWebApplicationContext
需要在web環(huán)境才能運行

BeanFactory與ApplicationContext的區(qū)別

BeanFactory:是Spring容器的最底層接口,只提供了簡單的IoC功能,負(fù)責(zé)配置和管理bean
ApplicationContext:
1.繼承BeanFactory,擁有基本IoC功能
2.ApplicationContext提供了以下功能:支持國際化,支持消息機(jī)制,支持統(tǒng)一的資源加載,支持AOP功能

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容