SpringFrameWork简介
介绍springFrameWork框架
Spring Framework是一个为企业级应用程序开发提供全面基础设施支持的开源框架,通过集成IoC、DI和AOP等技术,使得应用程序的开发更加灵活、可维护和可扩展。Spring MVC、SpringBoot、Spring Cloud、Spring Data、Spring Security 等框架都是以SpringFrameWork为基础,所以学习SpringFrameWork框架是学习spring全家桶的基础。
目录
- SpringFrameWork简介
- 一,springFrameWork的模块结构
- 二,组件
- 2.1:组件概念
- 2.2:组件与SpringIoC容器
- 三,IoC(控制反转 Inversion of control)
- 3.1:IoC概念
- 3.2:IoC与Spring核心容器
- 四,DI(依赖注入 Dependency injection)
- 4.1:DI概念
- 4.2:DI与SpringIoC容器
- 五,SpringIoC容器
- 5.1:SpringIoC容器容器介绍
- 5.2:SpringIoC容器管理配置的方式
- 5.3:SpringIoC容器的接口
- 5.4:Spring IoC容器接口实现类
一,springFrameWork的模块结构
SpringFrameWork框架结构图
- Core Container(核心容器):这是Spring框架的核心模块,包括spring-core、spring-beans、spring-context等模块。这些模块提供了Spring框架的基本组成和功能,例如反转控制(IoC)和依赖注入(DI)。
- Data Access/Integration(数据访问/集成):这个模块提供了访问各种数据源的方法和工具,包括关系型数据库、非关系型数据库、消息队列等。Spring框架支持多种持久层框。
- Web模块:该模块为基于Java的Web应用程序开发提供了全面的支持,包括MVC框架、WebSocket支持、RESTful Web服务等功能。
- AOP(面向切面编程)模块:该模块提供了一种新的编程范式,用于解决诸如日志记录、事务管理、安全等跨多个应用程序或模块的问题。
- Test模块:该模块提供了对单元测试和集成测试的支持,使得测试代码可以与应用程序代码分离
二,组件
2.1:组件概念
在Spring框架中,组件是指一个可重用的模块,通常是一组相关的类和接口的集合。Spring组件的目标是提供一组相关的功能,以便在不同的应用程序和环境中重用。组件通常具有明确定义的接口和规范,以便与外部环境进行交互。
2.2:组件与SpringIoC容器
SpringIoC容器是用来管理组件的,Java后端程序一般采用三层架构的设计思想,控制层,业务逻辑层,和持久层,各个层的相关接口以及类也可以理解是组件,后端功能的实现要依靠组件的实例化对象(控制层组件调用业务逻辑层组件,业务逻辑层调用持久层组件)
三,IoC(控制反转 Inversion of control)
3.1:IoC概念
IoC(inversion of control),即控制反转,是一种设计原则,通过反转控制权来降低代码间的耦合度。在传统的程序设计中,通常由程序本身负责对象的创建和管理,这种方式称为正向控制。但在IoC原则下,对象的创建和管理交由外部容器(IoC容器)来负责,而应用程序代码只需要关注业务逻辑,不再需要考虑对象的创建和管理,这种方式称为反向控制,IoC的核心思想是将原本在应用程序中负责对象创建和生命周期管理的代码抽取出来,放到一个外部的容器中来管理。这个容器负责创建、配置、组装和销毁对象,同时处理对象间的依赖关系。通过这种方式,可以将应用程序中的对象解耦,降低代码间的耦合度,提高代码的可维护性和可扩展性。
3.2:IoC与Spring核心容器
SpringIoC容器实现了IoC功能,通过读取配置文件或者注释等方式,Spring核心容器可以读取配置文件中组件信息,了解那些组件需要被核心容器管理,从而在核心容器启动时实例化这些组件。
四,DI(依赖注入 Dependency injection)
4.1:DI概念
DI,即依赖注入(Dependency Injection),也是实现控制反转(IoC)的一种方式。它的主要目的更加灵活地管理和配置对象及其依赖关系,降低代码之间的耦合度。在依赖注入中,对象不自己查找其依赖关系,或者通过构造函数、属性或工厂模式等方法来创建其依赖关系,而是在运行时由外部实体(例如一个容器或框架)将这些依赖关系注入到对象中。这样,对象与其依赖项之间的关系就被外部化了,Java对象本身不再负责这些关系的创建和维护。
4.2:DI与SpringIoC容器
SpringIoC容器所管理的组件之间可能存在相互调用的关系,如控制层组件调用业务逻辑层组件,一般是需要在控制层组件中new出业务逻辑层的组件,这是一种硬编码的方式,导致组件之间存在一种强耦合关系,不利于代码的模块化、可维护性和可扩展性。而SpringIoC容器可以通过配置文件或注释等方式去把组件所需要的依赖注入其中,从而实现了组件之间的依赖关系,SpringIoC容器在读取配置文件后所实例化的组件对象便存在这种依赖关系。
五,SpringIoC容器
5.1:SpringIoC容器容器介绍
SpringIoC容器是一个复杂容器,简单容器只能存储,删除对象如数组,复杂容器可以管理对象。SpringIoC容器不仅具备存储组件的功能,还具备诸如管理组件生命周期、处理依赖关系等功能。Spring IoC容器是Spring核心容器的一种实现,它提供了控制反转(IoC)机制的实现。
5.2:SpringIoC容器管理配置的方式
IoC容器通过XML配置文件、Java注释或Java代码等方式来定义和配置Bean,并负责创建Bean的实例以及建立Bean之间的依赖关系。应用程序中的组件只需要通过容器来获取所需的Bean实例,而不需要自己手动创建或管理这些Bean。
5.3:SpringIoC容器的接口
Spring IoC容器是一个接口,它定义了IoC容器的行为,并提供了一种标准化的方式来实现和使用IoC容器。以下是Spring IoC容器的核心接口:
- BeanFactory:BeanFactory是Spring IoC容器的核心接口,它提供了IoC容器的所有功能。BeanFactory接口定义了各种用于创建、配置和组装Bean的方法。它是Spring IoC容器最主要的接口,其他高级容器通常建立在BeanFactory的基础上。
- ApplicationContext:ApplicationContext是基于BeanFactory的一个扩展,提供了更多的功能和特性。它继承了BeanFactory的所有功能,并添加了诸如国际化、事件传播、资源加载等企业级特性。在Spring框架中,ApplicationContext是最常用的容器
5.4:Spring IoC容器接口实现类
主要有以下几种实现类
- AnnotationConfigApplicationContext,用于解析Java注释来定义和配置Bean,它通过读取Java类的注释信息来创建 IOC 容器对象。
- ClassPathXmlApplicationContext,通过读取类路径下的 XML 格式的配置文件创建 IOC 容器对象。
- WebApplicationContext,专门为 Web 应用准备,基于 Web 环境创建 IOC 容器对象,并将对象引入存入 ServletContext 域中。