Spring总结

Spring基础知识汇总

一.Spring总概

Spring总结_第1张图片

二.知识点概述

(1)Spring容器=Spring IOC 容器

  1. Spring 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为 Spring Beans。

    Spring总结_第2张图片
  2. Spring容器实现的两种方式:
    1. BeanFactory容器:IOC容器的基本实现,它主要的功能是为依赖注入 (DI) 提供支持
      在 Spring 中,有大量对 BeanFactory 接口的实现。其中,最常被使用的是 XmlBeanFactory 类。
      这个容器从一个 XML 文件中读取配置元数据,由这些元数据来生成一个被配置化的系统或者应用。
    2. ApplicationContext容器:它是BeanFactory的子接口,包含BeanFactory 容器的所有功能,并提供了更多的高级特性
      ConfigurableAppcationContext:ApplicationContext的子接口
      (有ConfigurableAppcationContext.refresh()刷新、close()关闭等方法)

      Spring总结_第3张图片
      最常被使用的 ApplicationContext 接口实现:
      FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径
      ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。
    3. 两者区别:
      1. BeanFactory 粗暴简单,可以理解为就是个 HashMap,Key 是 BeanName,Value 是 Bean 实例。通常只提供注册(put),获取(get)这两个功能。我们可以称之为“低级容器”
      2. ApplicationContext 可以称之为 “高级容器”。因为他比 BeanFactory 多了更多的功能。他继承了多个接口。因此具备了更多的功能。例如资源的获取,支持多种消息(例如 JSP tag 的支持),对 BeanFactory 多了工具级别的支持等待。所以你看他的名字,已经不是 BeanFactory 之类的工厂了,而是 “应用上下文”, 代表着整个大容器的所有功能。该接口定义了一个 refresh 方法,此方法是所有阅读 Spring 源码的人的最熟悉的方法,用于刷新整个容器,即重新加载/刷新所有的 bean。
    4. 总结:IoC 在 Spring 里,只需要低级容器就可以实现,2 个步骤:
      1. 加载配置文件,解析成 BeanDefinition 放在 Map 里。
      2. 调用 getBean 的时候,从 BeanDefinition 所属的 Map 里,拿出 Class 对象进行实例化,同时,如果有依赖关系,将递归调用 getBean 方法 —— 完成依赖注入。

        上面就是 Spring 低级容器(BeanFactory)的 IOC原理。
        至于高级容器 ApplicationContext,他包含了低级容器的功能,当他执行 refresh 模板方法的时候,将刷新整个容器的 Bean。同时其作为高级容器,包含了太多的功能。一句话,他不仅仅是 IoC。他支持不同信息源头,支持 BeanFactory 工具类,支持层级容器,支持访问文件资源,支持事件发布通知,支持接口回调等等。
  3. 依赖注入:当一个类的实例需要另一个类的实例协助时,在传统的程序设计过程中,通常有调用者来创建被调用者的实例。然而采用依赖注入的方式,创建被调用者的工作不再由调用者来完成,因此叫控制反转,创建被调用者的实例的工作由IoC容器来完成,然后注入调用者,因此也称为依赖注入。依赖注入的方式有两种:构造器注入和setter注入。
    Spring总结_第4张图片
  4. 自动装配:开发人员不必知道具体要装配哪个bean的引用,这个识别的工作会由spring来完成。与自动装配配合的还有“自动检测”,这个动作会自动识别哪些类需要被配置成bean,进而来进行装配。这样我们就明白了,自动装配是为了将依赖注入“自动化”的一个简化配置的操作。
    1. 依赖注入与装配的关系:依赖注入的本质就是装配,装配是依赖注入的具体行为。
      Spring总结_第5张图片
  5. 基于 XML 的配置文件和基于注解的配置都是为了依赖注入。
    Spring总结_第6张图片
    @configuration和@bean:Spring 基于 Java 的配置_w3cschool、SpringBoot - @Configuration、@Bean注解的使用详解(配置类的实现)
    spring注解大全:Spring注解大全详情,_D哈迪斯的博客-CSDN博客_spring注解

 

(2)AOPSpring总结_第7张图片

(3)Spring JDBC框架

(4)Spring WEB MVC框架

(5)事务处理

Spring总结_第8张图片

你可能感兴趣的:(Spring,spring,java)