1.BeanFactory
BeanFactory是Spring容器下的一个接口
由图可以看出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根据名字拿bean
bean=(Bean)factory.getBean(" beanName");
3.根据类型跟名字拿bean(推荐使用这种方式获取bean)
bean=(Bean)factory.getBean(" beanName",Bean.class);
isSingleton 判断是否为单例 ture 表示Bean为单例 false则为多例
isPrototype 判断是否为多例 相反
2.ApplicationContext
.ApplicationContext为BeanFactory的一个子接口,他继承了许多的接口
因此他的功能较BeanFactory更为强大
.ApplicationContext常见的实现类
1.ClassPathXmlApplicationContext
读取.classpath中的资源
ApplicationContext as=new ClassPathXmlApplicationContext("beans.xml");
2.FileSystemXmlApplicationContext
读取指定路径的资源
ApplicationContext as=newFileSystemXmlApplicationContext("e:/beans.xml");
3.XmlWebApplicationContext
需要在web环境才能运行
BeanFactory与ApplicationContext的区别
BeanFactory:是Spring容器的最底层接口,只提供了简单的IoC功能,负责配置和管理bean
ApplicationContext:
1.继承BeanFactory,拥有基本IoC功能
2.ApplicationContext提供了以下功能:支持国际化,支持消息机制,支持统一的资源加载,支持AOP功能