Spring基础——初探

 Spring是一个开源的Java应用程序开发框架,它提供了一个综合的编程和配置模型,用于构建现代化的企业级应用程序。Spring的目标是简化Java开发,并提供了许多功能和特性,以提供开发效率、降低开发复杂性。

特别

主要功能

IoC容器

IoC容器负责对象的创建和管理,实现了控制反转(IoC)和依赖注入(DI)模式。降低了对象之间的耦合性。

AOP支持

通过将横切关注点(如日志、事务)与核心业务逻辑分离,实现了代码的模块化和可重用性。

声明式事务管理

通过配置注解或XML,可将事务逻辑从业务代码中分离出来,实现了事务的一致性和可靠性。

表 Spring框架的主要特点及功能

Spring框架的核心是IoC和AOP。

1 IoC

IoC 控制反转(Inversion of Control),它不是一门技术,而是一种设计思想(模式)。能够指导我们如何设计出松耦合、更优良的程序。

Spring基础——初探_第1张图片

 图 传统方式为ClassA创建依赖对象

上面的createInterfaceB()方法表面上缓解了ClassA与InterfaceB具体类的耦合关系,但实质上代码耦合并没有改变。

通过IoC模式可以彻底解决这种耦合,它把耦合从代码中移出去,放到统一的XML文件中,通过一个容器在需要的时候把这个依赖关系形成,即把需要的接口实现注入到需要它的类中(依赖注入 DI)。

IoC容器来管理对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖性规范与实际的应用程序代码分离(通过文本的配置文件进行应用程序组件间相互关系的配置,从而不用重新修改并编译具体的代码)。

“控制反转” 的核心是容器帮我们查找及注入依赖的对象,对象只是被动地接收依赖对象。

1.1 实现策略

IoC中最基本的技术就是“反射”编程。根据给出的类名(字符串)来生成对象。

Spring实现IoC模式是通过依赖注入的方式:容器全权负责组件的装配,它会把符合依赖关系的对象通过JavaBean属性(设置方法注入)或构造函数(构造器注入)传递给需要的对象。

2 AOP

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程。是一种设计模式。

OOP 面向对象编程

针对业务处理过程的实体及其属性和行为进行抽象封装,以便获得更加清晰高效的逻辑单元划分。(面向对象)

AOP 面向切面编程

针对业务处理过程中的切面进行提取,所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。(面向过程)

表 OOP 与AOP的对比

2.1 为什么要用AOP

在开发中,往往在业务基础代码上还需要做其他操作,比如记录日志、对参数进行校验等。我们可以采用代理模式来实现这一需求。但是在系统中需要做额外操作的位置比较多,而且做得额外处理可能不一样,如果为这些位置单独写个动态代理类,则会造成代理类过多,及造成系统业务混乱。

我们需要一个统一处理这些代理的地方,来管理这些代理对象及代理方法等。AOP就是用来实现这个效果的。

Spring基础——初探_第2张图片

图 AOP切入

2.2 AOP 的组成

AOP 主要由切面(Aspect)组成。

切面(Aspect):切入到指定方法的代码片段称为切面(上面的权限验证、参数校验及日志记录插入到指定方法的代码片段)。切面由切点和处理组成。

切点(Pointcut):用于指定某个处理应该在何时被调用。切点是用来维护一组连接点的。

连接点(Join Point):在应用执行过程中能够插入切面点一个点(指在被插入代码中的位置)。

处理(Advice):即需要增强指定方法功能的片段(上面的权限验证、参数校验及记录日志)。

3 初始化Spring应用

在实际开发Sping项目中,我们往往不会手动创建项目的目录结构和定义构建规范的各个步骤,而是通过Spring InitiaLizr来初始化Spring项目。

3.1 Spring Initializr

Spring Initializr是一个基于浏览器的Web应用,同时也是一个REST API,它能生成一个Spring项目结构的骨架。

Spring基础——初探_第3张图片

图 IDEA 中使用Spring Initializr初始化Spring Boot项目

Spring基础——初探_第4张图片

图 Spring Initializr 生成的pom.xml

3.2 JAR和WAR

JAR:Java归档(Java Archive),是一种用于打包Java类、资源文件和元数据的标准格式。它可以将所有需要的类和资源打包到一个文件中,并通过Java虚拟机来运行。

WAR:是Web Archive到缩写,是一种用于打包Web应用程序的标准格式。可以包含Java类文件、JSP页面、HTML页面等其他Web资源文件。通常用于将Web应用部署到Web服务器中。

JAR

WAR

部署方式

可以在任何JAVA环境中运行。但无法直接在Web容器中部署(缺乏Web.xml文件)。

专门用于Web应用程序部署的。可以直接部署在Web容器中。部署时直接将WAR文件放到容器webapps目录下,容器在启动时会自动解压WAR文件。

适用场景

开发独立应用程序,如桌面应用或命令行工具。不适用Web应用程序。

专门用于Web应用程序的打包和部署。

优点

部署简单、可独立运行、轻量级

适合WEB应用程序,支持JSP页面。

缺点

不适合Web应用程序。不支持JSP页面。

部署复杂、依赖Web容器、体积更大

表 JAR和WAR的区别

你可能感兴趣的:(Spring,spring,java,后端,设计模式)