1、Spring的概述

一、Spring是什么?

1.1 简介

(1)Spring 是一个分层的Java SE/EE应用full-stack轻量级开源框架.
(2)Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.
(3)DI(Dependency Injection)和 AOP(Aspect Oriented Programming:面向切面编程)是Spring框架最核心的部分,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的 Java EE 企业应用开源框架

1.2 具体描述Spring

轻量级:Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API
依赖注入(DI --- dependency injection、IOC)
面向切面编程(AOP --- aspect oriented programming)
容器: Spring 是一个容器, 因为它包含并且管理应用对象的生命周期
框架: Spring 实现了使用简单的组件配置组合成一个复杂的应用. 在 Spring 中可以使用 XML 和 Java 注解组合这些对象
一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库 (实际上 Spring 自身也提供了展现层的 SpringMVC 和 持久层的 Spring JDBC)

1.3 Spring模块

二、Spring的发展历程

1997年IB,提出了EJB的思想
1998年SUN制定了标准规范EJB1.0
1999年,EJB1.1发布
2001年,EJB2.0发布
2003年,EJB2.1发布
2006年,EJB3.0发布
2017年9月发布了spring的最新版本spring5.0通用版本。

三、Spring的优势

3.1 方便解耦,简化开发

通过Spring提供的Ioc(反转控制)容器,可以讲对象间的以来关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。用户不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

3.2 AOP编程的支持

通过Spring的AOP(面向切面的编程)功能,方便进行面向切面的编程,许多不容易用传统的OPP实现的功能可以通过AOP轻松应付。

3.3 声明式事物的支持

可以讲我们从单调烦闷的事物管理代码中解脱出来,通过声明方式灵活的进行事物管理,提高开发的效率和质量。

3.4 方便程序测试

可以用非容器依赖的编程方式进行几乎所有的测试,测试不再是昂贵的操作,而是随手可做的事情

3.5 方便集成各种优秀框架

Spring可以降低各种框架的使用难度,提供了对各种优秀框架的直接支持。

3.6 降低JavaEE API的使用难度

Spring对JavaEE API(如JDBC、JavaMail、远程调用等)进行了薄薄的封装,是这些API的使用难度的大为降低。

四、Spring模块

当我们下载一个Spring版本并查看其libs目录时,会发现里面多多个JAR文件。Spring5.0.2框架的发布版本包括了21个不同的模块,每个模块会有三个JAR文件(二进制类库、源码的JAR文件以及JavaDoc的JAR文件),如图所示:

这些模块依据其所属功能可以分为6类不同功能,如图所示:

总体而言,这些模块为开发企业级应用提供了所需的一切。但是你不必将应用建立在整个Spring框架之上,你可以自由选择适合自身应用需求的Spring模块;当Spring模块不能满足需求时,完全可以考虑其他选择。事实上,Spring甚至提供了与其他第三方框架和类库的集成点,这样你就不需要自己编写这样的代码了。

五、Spring Portfolio

事实上,Spring远不是Spring框架所下载的那些。如果仅仅停留在核心的Spring框架层面。我们将错过了Spring Portfolio所提供的巨大财富。这个Portfolio包括了多个构建核心Spring框架之上的框架和类库。概括来讲,整个Spring Portfolio几乎为每一个领域的Java开发提供了Spring编程模型。
(1)Spring Web Flow:建立于Spring MVC框架之上,她为基于流程的会话式Web应用提供了支持。
(2)Spring Web Service:虽然核心的Spring框架提供了Spring bean以声明的方式发布以Web Service的功能,但这些服务是基于一个具有争议性的架构(拙劣的契约后置模型)之上而构建的。这些服务契约由bean的接口来决定。Spring Web Service提供了契约优先的Web Service模型,服务的实现都是为了满足服务的契约而编写的。
(3)Spring Security:安全对于许多应用都是一个非常关键的切面。利用Spring AOP, Spring Security为Spring应用提供了声明式的安全机制。
(4)Spring Integration:许多企业级应用都需要玉其他应用进行交互。Spring Integration提供了多种通用应用集成模式的Spring声明式风格实现。
(5)Spring Batch:当我们需要对数据进行大量操作时,没有任何技术可以比皮处理更胜任这种场景。如果需要开发一个批处理应用,你可以通过Spring Batch,使用Spring强大的面向POJO编程模型。
(6)Spring Data:Spring Data使得在Spring中使用任何数据库都变得非常容易。尽管关系型数据库统治企业级应用多年,但是现代化的应用在在认识到并不是所有的数据库都合适放在一张表中的行和列中。一种新的数据库种类,通常被称为NoSQL数据库,提供了使用数据的新方法,这些方法比传统的关系型数据库更为合适。
(7)Spring Mobile:移动应用是另一个引人注目的软件开发领域。只能手机和平板设备已成为许多用户首选的客户端。Spring Mobile是Spring MVC的新的扩展模块,用于支持移动Web应用开发。
(8)Spring for Android:与Spring Mobile相关的Spring Android项目。这个新项目,旨在通过Spring框架为开发Android设备的本地应用提供某些简单的支持。
(9)Spring Boot:Spring极大简化了总舵的编程任务,减少甚至消除了很多样板式代码,如果没有Spring的化,在日常工作中你不得不编写这样的样板代码。Spring Boot是一个令人兴奋的项目,它以Spring的视角,致力于简化Spring本身。
Spring Boot大量依赖于自动配置技术,它能够消除大部分Spring配置,它提供了多个Starter项目,不管你使用Maven还是Gradle,这都能减少Spring工程构建文件的大小。

posted @ 2020-06-02 16:04  小新和风间  阅读(306)  评论(0编辑  收藏  举报