4.BeanFactory和ApplicationContext(一)

前言

       BeanFactory是Spring最核心的接口之一,提供了高级Ioc的配置机制,面向Spring框架本身。ApplicationContext建立在BeanFactory之上,提供了更多面向对象的功能。我们一般称BeanFactory为Ioc容器,ApplicationContext为应用上下文,也称ApplicationContext为Spring容器。

        有两种主要的容器系列:
        1.实现BeanFactory接口的简单容器系列,这系列的容器只实现了容器的最基本的功能。
        2.ApplicationContext应用上下文,它是容器的高级形态,在简单容器的基础上,增加了许多面向框架的特性,同时对应用环境做了许多适配。

       
        注:BeanFactory接口说明了IoC容器的最基本的功能规范,它是作为最基本的接口类出现在IoC容器体系中的。在IoC容器中,BeanDefinition是对象间的依赖关系的数据抽象。BeanDefinition也是容器实现依赖注入功能的核心数据结构,依赖注入是通过对BeanDefinition的处理来完成的。

         
        提示:我们必须了解BeanFactory和ApplicationContext之间的区别。

BeanFactory介绍

       BeanFactory是一个类工厂,但与传统的类工厂只能创造一种或几种类实例不同的是,BeanFactory可以创建并管理各种类对象,Spring称这些被创建的对象为Bean。

       一:BeanFactory-------》HierarchicalBeanFactory-------》ConfigurableBeanFactory:BeanFactory接口定义了基本的基本的IoC容器的规范;HierarchicalBeanFactory接口在继承BeanFactory接口的基础上,增加了getParentBeanFactory()方法使之具备了双亲IoC容器的管理功能;在ConfigurableBeanFactory主要增加了对BeanFactory的配置功能,比如,增加了setParentBeanFactory()来设置双亲IoC容器等等;

   二:以ApplicationContext应用上下文接口为核心,BeanFactory-------》ListableBeanFactory-------》ApplicationContext-------》WebApplicationContext或ConfigurableApplicationContext。ListableBeanFactory接口细化了BeanFactory接口的功能。对于ApplicationContext而言,为了能在Web环境中使用它,设计了WebApplication接口;


     BeanFactory最主要的方法是getBean(String beanName),即从容器中获得特定名字的Bean;其他接口通过继承BeanFactory不断扩展BeanFactory的功能。
        ListableBeanFactory:访问容器中Bean的基本信息,如查看Bean的个数等;
        HierarchicalBeanFactory:父子级联Ioc容器的接口,子容器可以通过接口方法访问父容器;
        ConfigurableBeanFactory:重要的接口;
        AutowireCapableBeanFactory:定义将容器中的某种规则(如按名字匹配,按类型匹配等)进行自动装配的方法;
        SingletonBeanRegistry:定义了运行在容器运行期间注册单实例Bean的接口方法;

       BeanDefinitionRegistry:Spring配置文件中,每个<bean>节点在容器中都是用BeanDefinition对象表示的,它描述了Bean的配置信息。BeanDefinitionRegistry提供了向容器注册BeanDefinition的接口方法;

BeanFactory和FactoryBean

        FactoryBean:一般情况下,Spring通过反射机制利用<bean>的class属性来实例化类。如果按照传统的方式,则需要在<bean>中提供大量的配置信息。用户可以通过实现FactoryBean接口,定制实例化这个Bean的逻辑。Spring提供了70多个FactoryBean的实现,来隐藏实例化Bean的细节。
        从 Spring 3.0 开始, FactoryBean 开始支持泛型,即接口声明改为 FactoryBean<T> 的形式。
       
        BeanFactory:BeanFactory是一个工厂类(接口),它定义了IoC容器的最基本的规范。当然,BeanFactory并不是IoC容器的具体实现。Spring 给出了很多种具体的·实现,如 DefaultListableBeanFactory 、 XmlBeanFactory 、 ApplicationContext 等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值