Spring IoC 下的 BeanFactory与 ApplicationContext

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根据名字拿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功能

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容