介绍springFrameWork框架
Spring Framework是一个为企业级应用程序开发提供全面基础设施支持的开源框架,通过集成IoC、DI和AOP等技术,使得应用程序的开发更加灵活、可维护和可扩展。Spring MVC、SpringBoot、Spring Cloud、Spring Data、Spring Security 等框架都是以SpringFrameWork为基础,所以学习SpringFrameWork框架是学习spring全家桶的基础。
SpringFrameWork框架结构图
在Spring框架中,组件是指一个可重用的模块,通常是一组相关的类和接口的集合。Spring组件的目标是提供一组相关的功能,以便在不同的应用程序和环境中重用。组件通常具有明确定义的接口和规范,以便与外部环境进行交互。
SpringIoC容器是用来管理组件的,Java后端程序一般采用三层架构的设计思想,控制层,业务逻辑层,和持久层,各个层的相关接口以及类也可以理解是组件,后端功能的实现要依靠组件的实例化对象(控制层组件调用业务逻辑层组件,业务逻辑层调用持久层组件)
IoC(inversion of control),即控制反转,是一种设计原则,通过反转控制权来降低代码间的耦合度。在传统的程序设计中,通常由程序本身负责对象的创建和管理,这种方式称为正向控制。但在IoC原则下,对象的创建和管理交由外部容器(IoC容器)来负责,而应用程序代码只需要关注业务逻辑,不再需要考虑对象的创建和管理,这种方式称为反向控制,IoC的核心思想是将原本在应用程序中负责对象创建和生命周期管理的代码抽取出来,放到一个外部的容器中来管理。这个容器负责创建、配置、组装和销毁对象,同时处理对象间的依赖关系。通过这种方式,可以将应用程序中的对象解耦,降低代码间的耦合度,提高代码的可维护性和可扩展性。
SpringIoC容器实现了IoC功能,通过读取配置文件或者注释等方式,Spring核心容器可以读取配置文件中组件信息,了解那些组件需要被核心容器管理,从而在核心容器启动时实例化这些组件。
DI,即依赖注入(Dependency Injection),也是实现控制反转(IoC)的一种方式。它的主要目的更加灵活地管理和配置对象及其依赖关系,降低代码之间的耦合度。在依赖注入中,对象不自己查找其依赖关系,或者通过构造函数、属性或工厂模式等方法来创建其依赖关系,而是在运行时由外部实体(例如一个容器或框架)将这些依赖关系注入到对象中。这样,对象与其依赖项之间的关系就被外部化了,Java对象本身不再负责这些关系的创建和维护。
SpringIoC容器所管理的组件之间可能存在相互调用的关系,如控制层组件调用业务逻辑层组件,一般是需要在控制层组件中new出业务逻辑层的组件,这是一种硬编码的方式,导致组件之间存在一种强耦合关系,不利于代码的模块化、可维护性和可扩展性。而SpringIoC容器可以通过配置文件或注释等方式去把组件所需要的依赖注入其中,从而实现了组件之间的依赖关系,SpringIoC容器在读取配置文件后所实例化的组件对象便存在这种依赖关系。
SpringIoC容器是一个复杂容器,简单容器只能存储,删除对象如数组,复杂容器可以管理对象。SpringIoC容器不仅具备存储组件的功能,还具备诸如管理组件生命周期、处理依赖关系等功能。Spring IoC容器是Spring核心容器的一种实现,它提供了控制反转(IoC)机制的实现。
IoC容器通过XML配置文件、Java注释或Java代码等方式来定义和配置Bean,并负责创建Bean的实例以及建立Bean之间的依赖关系。应用程序中的组件只需要通过容器来获取所需的Bean实例,而不需要自己手动创建或管理这些Bean。
Spring IoC容器是一个接口,它定义了IoC容器的行为,并提供了一种标准化的方式来实现和使用IoC容器。以下是Spring IoC容器的核心接口:
主要有以下几种实现类