Spring 框架介绍 [Spring 优点][Spring 应用领域][体系结构][目录结构][基础 jar 包]
您的“关注”和“点赞”,是信任,是认可,是支持,是动力......
如意见相佐,可留言。
本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。
1 Spring 框架概述
可以看一下官网给出的介绍,如下图所示:
Spring 是一个主流的 Java Web 开发框架,该框架是一个轻量级的应用框架,具有很高的凝聚力和吸引力。Spring使每个人都可以更快,更轻松,更安全地进行Java编程。Spring对速度,简单性和生产率的关注使其成为世界上最受欢迎的 Java框架。
Spring 是分层的 Java SE/EE full-stack 轻量级开源框架,以 IoC(Inverse of Control,控制反转)和 AOP(Aspect Oriented Programming,面向切面编程)为内核,使用基本的 JavaBean 完成以前只可能由 EJB 完成的工作,取代了 EJB 臃肿和低效的开发模式。
在实际开发中,通常服务器端采用三层体系架构,分别为表现层(web)、业务逻辑层(service)、持久层(dao)。Spring 对每一层都提供了技术支持,在表现层提供了与 Struts2 框架的整合,在业务逻辑层可以管理事务和记录日志等,在持久层可以整合 Hibernate 和 JdbcTemplate 等技术。
2 Spring 的优点
Spring 框架的主要优点具体如下所示:
Spring 无处不在
Spring灵活的库受到全世界开发人员的信任。Spring每天为数百万终端用户提供愉快的体验——无论是流媒体电视、联网汽车、在线购物,还是其他无数的创新解决方案。Spring也有来自所有科技领域的巨头的贡献,包括阿里巴巴、亚马逊(Amazon)、谷歌、微软(Microsoft)等等。Spring 是易扩展的,方便集成各种优秀框架
Spring灵活而全面的扩展集和第三方库让开发人员可以构建几乎任何可以想象得到的应用程序。在其核心,Spring框架的控制反转(IoC)和依赖项注入(DI)特性为广泛的特性和功能集提供了基础。无论您是为web构建安全的、反应性的、基于云的微服务,还是为企业构建复杂的流数据流,Spring都有工具可以提供帮助。方便解耦,易于开发(简化开发)
Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。Spring 速度快
Spring 的工程师非常关心性能。在 Spring 中,默认情况下,您会注意到快速启动、快速关闭和优化执行。Spring 项目也越来越多地支持反应式(非阻塞)编程模型,以获得更高的效率。开发人员的生产力是 Spring 的超能力。与其他竞争范例相比,Spring Boot 帮助开发人员轻松构建应用程序,而且工作量要少得多。嵌入式 web 服务器、自动配置和“胖罐”帮助您快速入门,而 Spring DevTools 中的 LiveReload 等创新意味着开发人员可以比以前更快地迭代。您甚至可以在几秒钟内启动一个新的 Spring 项目,Spring Initializr 位于 start. Spring .io。Spring 是安全的
Spring在快速和负责地处理安全问题方面有可靠的记录。Spring提交者与安全专业人员一起工作,修补和测试任何报告的漏洞。第三方依赖关系也被密切监视,并定期发布更新,以帮助尽可能地保证数据和应用程序的安全性。此外,Spring Security使您更容易与行业标准的安全方案集成,并交付默认安全的可靠解决方案。Spring 社区很庞大,备受支持
Spring 社区是一个庞大的、全球性的、多样化的社区,跨越了所有年龄和能力的人,从完全的初学者到经验丰富的专业人士。无论你在旅途的哪个地方,你都可以找到你需要的支持和资源来帮助你进入下一个阶段:快速入门、指南和教程、视频、聚会、支持,甚至是正式的培训和认证。
Spring 框架的其他优点具体如下所示:
- 方便程序的测试
Spring 支持 JUnit4,可以通过注解方便地测试 Spring 程序。 - AOP 编程的支持
Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。 - 声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无须手动编程。
3 Spring 的应用领域
Spring 可以应用于微服务(Microservices)、响应式编程(Reactive)、云(Cloud)、网络应用(Web app)、无服务器(Serverless)、事件驱动(Event Driven)、批处理(Batch)等任何 Java 应用的开发中。
4 Spring 体系结构
4.1 Spring 体系结构概述
Spring 框架采用分层架构,根据不同的功能被划分成了多个模块,这些模块大体可分为 Data Access/Integration 层
、Web 层
、AOP 层
、Aspects 层
、Instrumentation 层
、Messaging 层
、Core Container 层
、 Test 层
,这些模块可以满足一切企业级应用开发的需求,在开发过程中可以根据需求有选择性地使用所需要的模块。
Spring 体系结构图如下所示。
4.2 各个模块介绍
(1)Data Access/Integration(数据访问/集成)层
数据访问/集成层包括 JDBC、ORM、OXM、JMS 和 Transactions 模块,具体介绍如下所示:
- JDBC 模块:提供了一个 JDBC 的抽象层,大幅度减少了在开发过程中对数据库操作的代码。
- ORM 模块:对流行的对象关系映射 API,包括 JPA、JDO、Hibernate 和 iBatis 提供了的集成层。
- OXM 模块:提供了一个支持对象/XML 映射的抽象层实现,如 JAXB、Castor、XMLBeans、JiBX 和 XStream。
- JMS 模块:指 Java 消息服务,包含的功能为生产和消费的信息。
- Transactions 事务模块:支持编程和声明式事务管理实现特殊接口类,并为所有的 POJO。
(2)Web 层
Spring 的 Web 层包括 Web、Servlet、Struts 和 Portlet 模块,具体介绍如下所示:
- Web 模块:提供了基本的 Web 开发集成特性,例如多文件上传功能、使用的 Servlet 监听器的 IoC 容器初始化以及 Web 应用上下文。
- Servlet 模块:包括 Spring 模型—视图—控制器(MVC)实现 Web 应用程序。
- Struts 模块:包含支持类内的 Spring 应用程序,集成了经典的 Struts Web 层。
- Portlet 模块:提供了在 Portlet 环境中使用 MV C实现,类似 Web-Servlet 模块的功能。
(3)Core Container(核心容器)层
Spring 的核心容器是其他模块建立的基础,由 Beans 模块、Core 核心模块、Context 上下文模块和 Expression Language 表达式语言模块组成,具体介绍如下所示:
- Beans 模块:提供了 BeanFactory,是工厂模式的经典实现(很成熟的实现),Spring 将管理对象称为 Bean。
- Core 核心模块:提供了 Spring 框架的基本组成部分,包括 IoC 和 DI 功能。
- Context 上下文模块:建立在核心和 Beans 模块的基础之上,它是访问定义和配置任何对象的媒介。ApplicationContext 接口是上下文模块的焦点。
- Expression Language 模块:是运行时查询和操作对象图的强大的表达式语言。
(4)其他模块
Spring的其他模块还有 AOP、Aspects、Instrumentation 以及 Test 模块,具体介绍如下所示:
- AOP 模块:提供了面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以降低耦合性。
- Aspects 模块:提供与 AspectJ 的集成,是一个功能强大且成熟的面向切面编程(AOP)框架。
- Instrumentation 模块:提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。
- Test 模块:支持 Spring 组件,使用 JUnit 或 TestNG 框架的测试。
5 Spring 目录结构
5.1 Spring 框架下载
目前 Spring 框架的最新版本是5.2.6
,可以去官网下载 。
官网下载地址:
https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframework/spring/5.2.6.RELEASE/spring-5.2.6.RELEASE-dist.zip
如下图所示,点击Download
下载名称为 spring-5.2.6.RELEASE-dist.zip
的压缩包。
5.2 Spring 框架目录结构介绍
下载完成后,解压文件 spring-5.2.6.RELEASE-dist.zip
可以得到spring-framework-5.2.6.RELEASE
文件夹,如下图所示。
打开spring-framework-5.2.6.RELEASE
文件夹,可以看到如下图所示内容。
对上图中的目录说明,
docs
目录:Spring 的 API 文档和开发规范。libs
目录:开发需要的 JAR 包和源码包。schema
目录:开发所需要的 schema 文件,在这些文件中定义了 Spring 相关配置文件的约束。
6 Spring 框架的四个基础 JAR 包
在 libs
目录中,包含了 Spring 框架提供的所有 JAR 文件,其中有四个 JAR 文件是 Spring 框架的基础包,分别对应 Spring 容器的四个模块,具体如下所示:
spring-beans-5.2.6.RELEASE.jar
:所有应用都要用到的,它包含访问配置文件、创建和管理 bean 以及进行 Inversion of Control(IoC)或者 Dependency Injection(DI)操作相关的所有类。spring-context-5.2.6.RELEASE.jar
:Spring 提供在基础 IoC 功能上的扩展服务,此外还提供许多企业级服务的支持,如邮件服务、任务调度、JNDI 定位、EJB 集成、远程访问、缓存以及各种视图层框架的封装等spring-core-5.2.6.RELEASE.jar
:包含 Spring 框架基本的核心工具类,Spring 其他组件都要用到这个包中的类,是其他组件的基本核心。spring-expression-5.2.6.RELEASE.jar
:定义了 Spring 的表达式语言。
7 使用 Spring 框架时,必须导入的 JAR 包
在使用 Spring 框架开发时,除了 Spring 自带的 JAR 包以外,还需要一个第三方 JAR 包 commons-logging-1.2.jar
处理日志信息。
也就是说在使用 Spring 框架时,我们至少要将 Spring 框架的四个基础 JAR 包以及commons-logging-1.2.jar
包复制到项目的 libs
目录,并发布到类路径中即可。如下图所示: