首页 > 其他分享 >15. Spring概述

15. Spring概述

时间:2022-10-26 18:02:05浏览次数:57  
标签:Web 5.3 15 框架 spring jar 概述 Spring

一、为什么要使用Spring

1.1、OCP开闭原则

  OCP 是软件七大开发原则当中最基本的一个原则:开闭原则,即 对扩展开放、对修改关闭;OCP原则 是最核心的,最基本的,其它六个原则都是为这个原则服务的。OCP原则 的核心是:只要你在扩展系统功能的时候,没有修改以前写好的代码,那么你写的程序就是符合OCP原则的。反之,如果在扩展系统功能的时候,你修改了之前的代码,那么这个设计就是失败的,违背OCP原则。当进行系统功能扩展的时候,如果动了之前稳定的程序,修改了之前的程序,之前所有的程序都需要进行重新测试。

1.2、依赖倒置原则

  依赖倒置原则(Dependence Inversion Principle,简称 DIP),主要倡导面向抽象编程,面向接口编程,不要面向具体编程,即 上层不再依赖下层 ,如果下面改动了,上面的代码不会受到牵连。依赖倒置原则的目的是降低程序的耦合度,提高扩展力。

1.3、控制反转

  控制反转(Inversion of Control,简称IOC) 反转的是两件事。第一件事反转的是 创建对象的方式,即在程序中不采用硬编码的方式来 new 对象。第二件事反转的是 对象之间的关系,即在程序中不采用硬编码的方式来维护对象的关系。因此,控制反转的核心是:将对象的创建权交出去,将对象和对象之间关系的管理权交出去,交给第三方容器来创建与维护

  Spring框架 实现了 控制反转IOC 这种思想,即 Spring 框架可以帮你 new对象,可以帮你维护对象和对象之间的关系。Spring 是一个实现了 IOC思想 的容器。控制反转有多种实现方式,其中比较重要的是 依赖注入(Dependency Injection,简称DI)控制反转是思想,依赖注入就是实现这种思想的具体实现。依赖注入DI 又包含两种常见的方式:(1)set注入,即执行 setXxx() 给属性赋值;(2)构造方法注入,即执行构造方法给属性赋值;依赖注入依赖 指的是A对象和B对象的关系,注入 是一种手段,通过这种手段,可以让A对象与B对象产生关系。

二、Spring简介

  Spring是轻量级开源JavaEE框架。它可以解决企业应用开发的复杂性。它最初是有 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。它有两个核心的部分:IOCAopIOC(控制反转),把创建对象过程交给Spring进行管理。Aop(面向切面),不修改源代码的情况下,进行功能的添加。Spring框架主要有八部分组成,分别是Spring Core、Spring Contex、Spring AOP、Spring DAO、Spring ORM、Spring Web MVC、Spring WebFlux 和 Spring Web。

  Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。Spring 框架的目标是使 Java EE 开发变得更容易使用,通过启动基于 Pojo 编程模型来促进良好的编程实践。

三、Spring的八大功能模块

功能模块 功能介绍
Spring Core 核心容器,在 Spring 环境下使用任何功能都必须基于 IOC 容器
Spring Context 国际化消息(I18N)、事务传播、验证的支持、企业服务、Velicity 和 FreeMarker 集成的支持
Spring AOP 面向切面编程
Spring DAO 提供了单独的支持 JDBC 操作的 API
Spring ORM 支持集成常见的 ORM 框架
Spring Web MVC Spring 自己提供了一套 MVC 框架
Spring WebFlux Spring 提供的响应式 Web 框架
Spring Web 支持集成常见的 Web 框架

注意:Spring5 之前没有 Spring WebFlux 模块;

Spring Core 模块

  这是 Spring 框架最基础的部分,它提供了 依赖注入(Dependency Injection) 特征来实现容器对 Bean 的管理。核心容器的主要组件是 BeanFactory,Beanfactory 是工厂模式的一个实现,是任何 Spring 应用的核心。它使用 IOC 将应用配置和依赖从实际的代码中分离出来。

Spring Context 模块

  如果说核心模块中的 BeanFactory 使 Spring 成为容器的话,那么上下文模块就是 Spring 成为框架的原因。这个模块扩展了 BeanFactory ,增加了对国际化(I18N)消息、事件传播、验证的支持。另外提供了许多企业服务,例如电子邮件、JNDI访问、EJB集成、远程以及时序调度(scheduling)服务。也包括了对模版框架例如Velocity和FreeMarker集成的支持。

Spring AOP 模块

  Spring 在它的 AOP 模块中提供了对面向切面编程的丰富支持,Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖组件,就可以将声明性事务管理集成到应用程序中,可以自定义拦截器、切点、日志等操作。

Spring DAO 模块

  提供了一个 JDBC 的抽象层和异常层次结构,消除了烦琐的 JDBC 编码和数据库厂商特有的错误代码解析,用于简化 JDBC。

Spring ORM 模块

  Spring 提供了 ORM 模块。Spring 并不试图实现它自己的 ORM 解决方案,而是为几种流行的 ORM 框架提供了集成方案,包括Hibernate、JDO和 iBATIS SQL映射,这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

Spring Web MVC模块

  Spring 为构建 Web 应用提供了一个功能全面的 MVC 框架。虽然 Spring 可以很容易地与其它 MVC 框架集成,例如 Struts,但 Spring 的MVC 框架使用 IOC 对控制逻辑和业务对象提供了完全的分离。

Spring WebFlux模块

  Spring Framework 中包含的原始 Web 框架 Spring Web MVC 是专门为 Servlet API 和 Servlet 容器构建的。反应式堆栈 Web 框架 Spring WebFlux 是在 5.0 版的后期添加的。它是完全非阻塞的,支持反应式流(Reactive Stream)背压,并在 Netty,Undertow 和 Servlet 3.1+容器等服务器上运行。

Spring Web模块

  Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文,提供了Spring 和其它 Web 框架的集成,比如Struts、WebWork。还提供了一些面向服务支持,例如:实现文件上传的 multipart 请求。

四、Spring的特点

  • 轻量级:从开发与开销两方面而言 Spring 都是轻量级的。完整的 Spring 框架可以在一个大小只有 1MB 多的 JAR 文件里发布。并且 Spring 所需的处理开销也是微不足道的。
  • 非侵入式:使用 Spring 开发应用程序时,Spring 对应用程序本身的结构影响非常小。对领域模型可以做到零污染;对功能性组件也只需要使用几个简单的注解进行标记,完全不会破坏原有结构,反而能将组件结构进一步简化。这就使得基于 Spring 开发应用层序时结构清晰,简洁优雅。
  • 控制反转:IOC —— Inversion of Control,翻转资源获取方向。把自己创建资源,向环境索取资源变成环境将资源准备好,我们享受资源注入。Spring 通过控制反转技术做到的松耦合,当应用了 IOC,一个对象依赖的其它对象会通过被动的方式传递出来,而不是这个这个对象自己创建或者查找依赖对象。
  • 面向切面编程:AOP —— Aspect Oriented Programming,在不修改源代码的基础上增强代码功能。Spring 提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统系服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的(完成业务逻辑)仅此而已。它们并不负责(甚至是意识)其它的系统关注点,例如日志或者事务功能。
  • 容器:Spring IOC 是一个容器,因为它包含并且管理组件对象的生命周期。你可以配置你的每个 bean 如何被创建的即基于一个配置原型(prototype);你的 bean 可以创建一个单独的实例或者每次需要时都生成一个新的实例,以及它们是如何相互关联的。组件享受到了容器化的管理,替程序员屏蔽了组件创建过程中的大量细节,极大的降低了使用门槛,大幅度提高了开发效率。
  • 组件化:Spring 实现了使用简单的组件配置组成了一个复杂的应用。在 Spring 中可以使用 XML 和 Java注解 组合这些对象。这使得我们可以基于一个个功能明确、边界清晰的组件有条不紊的搭建超大型复杂应用
  • 声明式:很多以前需要编写代码才能实践的功能,现在只需要声明需求即可由框架代为实现
  • 一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。而且 Spring 旗下的项目已经覆盖了广泛领域,很多方面的功能性需求可以在 Spring 的基础上全部使用 Spring 来实现。

五、开发环境搭建

  这里,我们只使用 Spring 的基础功能,需要导入的 jar 包有:spring-core-5.3.9.jarspring-beans-5.3.9.jarspring-context-5.3.9.jarspring-aop-5.3.9.jarspring-expression-5.3.9.jar spring-jcl-5.3.9.jar

  先将一个文件夹【lib】用来存放所需要的jar包。然后点击【File】选项,在弹出的对话框中选择【Project Structure...】选项,然后在弹出的选项卡中选择【Moudules】,然后在右边的选项栏中选择【Dependencies】,紧接着在下面的界面中点击 +号,然后在弹出的对话框中选择【1 JARs or directories...】,然后在弹出的对话框中选择要导入的jar包,然后点击【OK】。然后在点击【Apply】即可。

JAR文件 描述
spring-aop-5.3.9.jar 这个 jar 文件包含在应用中使用 Spring 的AOP 特性时所需的类
spring-aspects-5.3.9.jar 提供对 AspectJ 的支持,以便可以方便的将面向切面的功能集成进 IDE 中
spring-beans-5.3.9.jar 这个 jar 文件是所有应用都要用到的,
它包含访问配置文件、创建和管理 bean以及进行 IOC/DI 操作相关的所有类。
如果应用只需基本的 IOC/DI 支持,引入spring-core.jar 及spring-beans.jar 文件就可以了。
spring-context-5.3.9.jar 这个 jar 文件为 Spring 核心提供了大量扩展。
可以找到使用 Spring ApplicationContext 特性时所需的全部类,
JDNI 所需的全部类,instrumentation 组件以及校验 Validation 方面的相关类。
spring-context-indexer-5.3.9.jar 虽然类路径扫描非常快,但是 Spring 内部存在大量的类,
添加此依赖,可以通过在编译时创建候选对象的静态列表来提高大型应用程序的启动性能。
spring-context-support-5.3.9.jar 用来提供 Spring 上下文的一些扩展模块,例如实现邮件服务、视图解析、缓存、定时任务调度等
spring-core-5.3.9.jar Spring 框架基本的核心工具类。
Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,
当然你也可以在自己的应用系统中使用这些工具类。
spring-expression-5.3.9.jar Spring 表达式语言。
spring-instrument-5.3.9.jar Spring3.0 对服务器的代理接口。
spring-jcl-5.3.9.jar Spring 的日志模块。
JCL,全称为"Jakarta Commons Logging",也可称为"Apache Commons Logging"。
spring-jdbc-5.3.9.jar Spring 对 JDBC 的支持。
spring-jms-5.3.9.jar 这个 jar 包提供了对 JMS 1.0.2/1.1 的支持类。JMS 是 Java 消息服务。属于 JavaEE 规范之一。
spring-messaging-5.3.9.jar 为集成 messaging api 和消息协议提供支持
spring-orm-5.3.9.jar Spring集成ORM框架的支持,比如集成 hibernate,mybatis 等。
spring-oxm-5.3.9.jar 为主流O/X Mapping组件提供了统一层抽象和封装,
OXM是Object Xml Mapping。对象和XML之间的相互转换。
spring-r2dbc-5.3.9.jar Reactive Relational Database Connectivity (关系型数据库的响应式连接) 的缩写。
这个 jar 文件是 Spring 对 r2dbc 的支持。
spring-test-5.3.9.jar 对 Junit 等测试框架的简单封装。
spring-tx-5.3.9.jar 为 JDBC、Hibernate、JDO、JPA、Beans等提供的一致的声明式和编程式事务管理支持。
spring-web-5.3.9.jar Spring 集成 MVC 框架的支持,比如集成 Struts等。
spring-webflux-5.3.9.jar WebFlux 是 Spring5 添加的新模块,用于 web 的开发,功能和 SpringMVC 类似的,
Webflux 使用当前一种比较流程响应式编程出现的框架。
spring-webmvc-5.3.9.jar SpringMVC 框架的类库
spring-websocket-5.3.9.jar Spring 集成 WebSocket 框架时使用

  或者通过 Maven 的方式导入有关 Spring 的 jar包。如果只想使用 Spring 的 IOC 功能,那么仅需要引入 spring-context 即可。

<!-- 基于 Maven 的传递性,导入 spring-context 依赖即可导入当前所需有关 spring 的 jar包 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.9</version>
</dependency>

标签:Web,5.3,15,框架,spring,jar,概述,Spring
From: https://www.cnblogs.com/nanoha/p/16829371.html

相关文章

  • Spring @Scheduled问题总结
    1.@Scheduled使用在SpringBoot中要想使用@Scheduled注解,先要在启动类上加上注解@EnableScheduling@Configuration@EnableScheduling publicclassScheduleCo......
  • POJ4150上机
    描述  又到周末了,同学们陆陆续续开开心心的来到机房上机。jbr也不例外,但是他到的有点晚,发现有些机位上已经有同学正在做题,有些机位还空着。细心的jbr发现,一位同学来到机......
  • Wallys/DR7915-wifi6-MT7915-MT7975-2T2R-support-OpenWRT-802.11AX-supporting-MiniP
    Wallys/DR7915-wifi6-MT7915-MT7975-2T2R-support-OpenWRT-802.11AX-supporting-MiniPCIe-Module//QCA9882/QCA9880 WallyscouldhelpclientsbuildPrototype.Weha......
  • 愤怒的小鸟重制版 for Mac(休闲益智类游戏)v1.15中文版
    愤怒的小鸟Mac版如何下载?愤怒的小鸟重制版AngryBirdsReloaded是一款在Mac平台上的休闲益智类小游戏,该游戏戏以小鸟报复偷走鸟蛋的肥猪为游戏背景,讲述了小鸟与肥猪的一系......
  • SpringBoot启动过程(二)
    ​​上一篇​​https://blog.51cto.com/u_15815563/5787667​​说到设置了初始化器。设置listener现在,同样的一套流程,这次要实例化的是实现了ApplicationListener的类,并存......
  • Springboot 一行代码实现文件上传 20个平台!少写代码到极致
    又是做好人好事的一天,有个小可爱私下问我有没有好用的springboot文件上传工具,这不巧了嘛,正好我私藏了一个好东西,顺便给小伙伴们也分享一下,demo地址放在文末了。文件上传......
  • HTML表格标签2和HTML表单标签概述
    HTML表格标签2:HTML表格标签有:colspan的意思是:合并列rowspan:合并行<caption>:表格标题<thead>:表示表格的头部分<tbody>:表示表格的体部分<tfoot>:表示表格的脚部分......
  • SpringBoot配置RabbitMQ
    一、导入Maven依赖<!--Springboot父依赖--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-......
  • RabbitMQ的安装和简单概述
    一、安装RabbitMQ1、概述:RabbitMQ是一个开源的遵循AMQP协议实现的基于Erlang语言编写,一般地,需要先安装部署Erlang环境再安装RabbitMQ环境。但在docker中,Erlang环境已经......
  • Spring常用注解含义
    Spring注解在spring中,将组件注入ioc容器的方式通常分为两种1、第一种也就是我们常用的@Component、@Controller、@ServicResponse以及@Respository注解。2、使用@Bean注......