zoukankan      html  css  js  c++  java
  • 004 IOC---IOC容器

    一.概述

      在上一节之中,我们说到了IOC容器,并且说到了BeanFactory.

      现在我们来看一下BeanFactory的定义.

    我们可以看到BeanFactory定义的方法,核心的方法就是getBean()方法.

    也就是说,spring封装了创建Bean的全部过程,用户只需要getBean()就可以了.

    那么,之前我们也说到了spring通过配置信息知道用户需要创建什么样的Bean,那么我们后面的一个核心就是学会配置.


    二 .ApplicationContext

      Beanfactory实际上定义了IOC容器的基本形式,对于程序员来说,一般情况下是不会使用BeanFactory这样底层的容器的.

      spring为我们提供了ApplicationContext,含义是应用上下文.

        上下文在编程中一般的含义就是包含当前运行信息的环境.因此,我们一般也将ApplicaitonContext视为IOC容器.

    public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,
            MessageSource, ApplicationEventPublisher, ResourcePatternResolver {

    上面是ApplicationContext的定义,我们看到其实际上继承了BeanFactory,同时还继承了其它的接口.

      如 MessageSource,ApplicationEventPublisher等接口,也就是说ApplicaitonContext具有了国际化和事件的能力,这些都是后面我们需要说的.

    做为程序员,我们经常使用的都是该接口的子类:

    如:

    ClassPathXmlApplicationContext  //从类路径下加载配置信息
    FileSystemXmlApplicationContext //从文件系统加载配置信息
    AnnotationConfigApplicationContext // 注解式环境

    我们看到,子类只是获取配置信息的方式不同,同时还提供了环境下一些特殊行为.


    三 .BeanFactory和ApplicaitonContext

      这是一个老生常谈的问题,首先

      [1]BeanFacoty是IOC的顶层接口,定义了IOC容器的一般行为.

      [2]ApplicationContext继承了BeanFactory,同时继承了其它的接口,如时间,国际化等接口,也就是说拥有的能力比BeanFactory更强.

      [3]BeanFactory是spring底层使用的,ApplicaitonContext才是程序员应该使用的接口.

      [4]加载时机的问题,ApplicaitonContext会初始化所有的单例Bean,这个问题我们后面会重点说明.

  • 相关阅读:
    k8s-存储-volume
    k8s-存储-configmap
    k8s-集群调度
    k8s-常用命令
    k8s-资源限制
    k8s-更改证书时间
    kubeadmin安装k8s
    CCPC-Wannafly Winter Camp Day7 D---二次函数【数论】【构造】
    洛谷P1219 八皇后【dfs】
    2019寒假计数器
  • 原文地址:https://www.cnblogs.com/trekxu/p/9090674.html
Copyright © 2011-2022 走看看