1.BeanFactory
BeanFactory是Spring容器下的一個接口
1111.png
由圖可以看出BeanFactory位于設計的最底層 所以我們可以看它提供了哪些方法
//
// 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:對應了多個方法來獲取給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更為強大
.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功能,負責配置和管理bean
ApplicationContext:
1.繼承BeanFactory,擁有基本IoC功能
2.ApplicationContext提供了以下功能:支持國際化,支持消息機制,支持統(tǒng)一的資源加載,支持AOP功能