zoukankan      html  css  js  c++  java
  • Spring之IoC容器

    Spring框架的主要特性之一是IoC(控制反转)容器,它负责管理应用程序中的对象,它通过依赖注入来实现控制反转。

    org.springframework.beans 和 org.springframework.context 包路径下的接口或者类为Spring IoC容器的实现提供最基本的支持。 

    BeanFactory和ApplicationContext接口代表了Spring IoC容器。

    • BeanFactory是Spring IoC容器的根接口,它提供了管理bean的基本功能。
    • ApplicationContext是BeanFactory的子接口,它具备BeanFactory的所有功能;此外,它还提供了更多特定于企业的功能。


    BeanFactory

    BeanFactory使得开发人员能够读取bean的定义并访问对应实例,如下:

    InputStream is = new FileInputStream("beans.xml");
    BeanFactory factory = new XmlBeanFactory(is);
     
    //Get bean
    HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");

    其他创建BeanFactory的方法如下:

    Resource resource = new FileSystemResource("beans.xml");
    BeanFactory factory = new XmlBeanFactory(resource);

    或者

    ClassPathResource resource = new ClassPathResource("beans.xml");
    BeanFactory factory = new XmlBeanFactory(resource);

    BeanFactory methods

    此处列出了BeanFactory中的部分方法,见下表:

    ApplicationContext

    由于ApplicationContext包含了BeanFactory的所有功能,所以通常建议使用它而不是BeanFactory。

    Note:

    BeanFactory 是 Spring 框架的基础设施,面向 Spring 框架本身;而ApplciationContext 面向使用 Spring 框架的开发者,几乎所有应用场合都直接使用 ApplicationContext,而非底层的 BeanFactory

    ApplicationContext context = new FileSystemXmlApplicationContext("beans.xml");
    HelloWorld obj = (HelloWorld) context.getBean("helloWorld");

    Note:

    控制反转是一种思想

    依赖注入是一种实现方式

    详解:

    将控制反转作为一种设计指南,可以达到以下目的:

    • 某个任务的执行与实现之间存在解耦,每个模块都可以专注于它的设计目的
    • 更换模块对其他模块没有副作用

    Spring 框架使用依赖注入作为实现控制反转的方式,但是控制反转还有其他实现方式,如下:

    小结:

    不能将控制反转和依赖注入等同。

  • 相关阅读:
    【原创】深入理解c++的右值引用
    【原创】c++拷贝初始化和直接初始化的底层区别
    【原创】Github团队协作之Pull请求
    【原创】基于多线程的银行家算法设计
    【原创】Git删除暂存区或版本库中的文件
    【笔记】程序员的思维修炼3
    【笔记】德雷福斯模型
    【原创】GC/垃圾回收简介
    数据库——JavaWEB数据库连接
    多线程
  • 原文地址:https://www.cnblogs.com/studyLog-share/p/5494651.html
Copyright © 2011-2022 走看看