您的“关注”和“点赞”,是信任,是认可,是支持,是动力......

如意见相佐,可留言。

本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。

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 处理日志信息。

官网下载地址:

http://commons.apache.org/proper/commons-logging/download_logging.cgi

进入官网之后,找到commons-logging-1.2-bin.zip,点击就可以下载。

也就是说在使用 Spring 框架时,我们至少要将 Spring 框架的四个基础 JAR 包以及commons-logging-1.2.jar包复制到项目的 libs 目录,并发布到类路径中即可。如下图所示:

8 文章其他地址

8.1 微信公众号:码农阿杰

8.2 CSDN 博客

9 参考资料地址

9.1 spring

9.2 Artifact Repository Browser

9.3 Apache Commons

Spring 框架介绍 [Spring 优点][Spring 应用领域][体系结构][目录结构][基础 jar 包]的更多相关文章

  1. [翻译]Spring框架参考文档(V4.3.3)-第二章Spring框架介绍 2.1 2.2 翻译--2.3待继续

    英文链接:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/overview.ht ...

  2. Spring 框架介绍

    Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Control – I ...

  3. Spring框架系列(4) - 深入浅出Spring核心之面向切面编程(AOP)

    在Spring基础 - Spring简单例子引入Spring的核心中向你展示了AOP的基础含义,同时以此发散了一些AOP相关知识点; 本节将在此基础上进一步解读AOP的含义以及AOP的使用方式.@pd ...

  4. Spring 框架的概述以及Spring中基于XML的IOC配置

    Spring 框架的概述以及Spring中基于XML的IOC配置 一.简介 Spring的两大核心:IOC(DI)与AOP,IOC是反转控制,DI依赖注入 特点:轻量级.依赖注入.面向切面编程.容器. ...

  5. Spring框架介绍及使用

    Spring框架—控制反转(IOC)1 Spring框架概述1.1 什么是Spring1.2 Spring的优点1.3 Spring的体系结构2 入门案例:(IoC)2.1导入jar包2.2目标类2. ...

  6. Spring框架介绍及使用(转载)

    原文链接 Spring框架—控制反转(IOC) 1 Spring框架概述1.1 什么是SpringSpring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod ...

  7. 08 Spring框架的概念、优势、体系结构、耦合性和IOC(反转控制)

    1.spring介绍 Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control: 反转控制)和 AOP(Aspect ...

  8. 【Spring】Spring框架之Struts2和Spring的优点

    Java Web开发使用Structs2和Spring框架的好处 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术 ...

  9. Spring框架介绍和原理

    SpringMVC框架介绍 1) Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面. Spring 框架提供了构建 Web 应用程序的全功 ...

随机推荐

  1. 数据结构和算法(Golang实现)(3)简单入门Golang-流程控制语句

    流程控制语句 计算机编程语言中,流程控制语句很重要,可以让机器知道什么时候做什么事,做几次.主要有条件和循环语句. Golang只有一种循环:for,只有一种判断:if,还有一种特殊的switch条件 ...

  2. 子域名爆破工具:OneForALL

    0x00 简介 OneForAll是一款功能强大的子域收集工具 0x01 下载地址 码云: https://gitee.com/shmilylty/OneForAll.git Github: http ...

  3. Redis学习二:Redis高并发之主从模式

    申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 前面已经学习了Redis的持久化方式,接下来开始学习Redi ...

  4. Redis学习三:Redis高可用之哨兵模式

    申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 Redis 的 Sentinel 系统用于管理多个 Redi ...

  5. A - Number Sequence 哈希算法(例题)

    Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], ...... , b[M] (1 <= M ...

  6. linux常用命令--文件和目录

    cd /home 进入 '/ home' 目录' cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 cd - 返回上次所在的目 ...

  7. 简谈” Top K“

    Top K 快速选择和堆排序都可以求解 Kth Element 和 TopK Elements 问题. 题见215. Kth Largest Element in an Array (Medium) ...

  8. Exercise

    """ 问:执行完下面的代码后, l,m的内容分别是什么? """ def func(m): for k,v in m.items(): m ...

  9. python学习笔记(一)---字符串与列表

    字符串的一些处理 字符串的大小写 name="lonmar hb" print(name.upper())#全大写 print(name.lower())#全小写 print(na ...

  10. Makefile: missing separator(did you mean TAB instead of 8 spaces?). Stop.

    通常我们会对vimrc文件加以配置(如将TAB键自动转换为4个空白键). 但正是由于将tab键转换为n个空白键,使得用vim编写的Makefile中不存在tab键(即“\t”)了.恰恰Makefile ...