(二)Spring框架之初见(下载,jar包简介)

在大致了解了一下Spring的前世今生后,如果继续开讲Spring中的核心理论概念就未免枯燥无味了。所以接下来,我们先从官网把它下载下来,看看它到底是什么样儿的,包含了哪些东东🤭。

在上一讲中,我们说Spring是起源于一位叫 Rod Johnson 的大神根据自己的书《Expert One-On-One J2EE Development Without EJB》。目前经历过一系列的变迁,Spring隶属于了一家叫做Pivotal(毕威拓)的科技公司。所以,Spring并不是Oracle(或被收购前的SUN)公司的JavaEE平台自带的。如果要使用它,必须到Spring自己的官网去进行下载,并且导入配置到我们的工程程序中。

如何在官网下载Spring

  1. 首先进入 Spring官网 https://spring.io/ 点击PROJECTS链接,进入下一个页面;
  2. 点击SpringFrame图标,进入下一页面;
  3. 点击小猫图标,进入github页面;

  4. 在滚动页面到下半部找一个Spring Framework Artifacts 超链接,点击跳到下一个页面;

  5. 滚动页面到中部找到一个超链接http://repo.spring.io,点击跳到另外一个页面;
  6. 在该页面左侧菜单栏,点击左边第二个图标;
  7. 在左侧的Tree中依次找到libs-release-local –> org –> springframework –> spring;
  8. 然后可以看到Spring下面有很多版本3.x、4.x、5.x,选择合适版本,右键,点击Native Browser,然后选择第一个点击下载即可。

汗💦,够麻烦吧,👿❗️❗️

如果觉得以上东西太麻烦,可以直接访问这个网址:https://repo.spring.io/list/libs-release-local/org/springframework/spring/ ,然后在列表中点击你选择的对应版本的Spring框架进行下载。

⚠️通过上面两种方式,到达的最终下载也面都会提供3个下载链接

其中:
spring-framework-x.x.x.RELEASE-dist.zip,这是我们开发者要下载的发布版本(dist是distribution的简写,意为“发布”),里面既包含了Spring框架提供的全部jar包,也包含了开发文档和配置文件所需的schema文件(xsd后缀文件);
spring-framework-x.x.x.RELEASE-docs.zip,这是文档包(docs是documents的简写,意为“文档”),只包含了Spring框架的开发文档;
spring-framework-x.x.x.RELEASE-schema.zip,这是schema包(schema是XML文件的文档结构说明),只包含了Spring框架的配置文件所需的schema文件(xsd后缀文件)。
因此,我们只需要下载第一个dist版就可以了。

Spring下载压缩包说明

我们从官网上下载得到的是一个压缩文件“spring-framework-x.x.x.RELEASE.zip”,其中x.x.x是版本号。比如,我下载的就是5.0.9版本,我们本次Spring讲解就是基于这个版本。
接下来,当然是条件反射性动作—双击666(不对,是双击解压🤭😊)。解压开以后,点开文件夹,我们看到包含如下内容:

首先介绍一下:
license.txt、notice.txt、readme.txt,这3篇是许可证书、注意事项、自述文件,对于我们目前学习开发没有作用,忽略它们先;
libs文件夹,这个文件夹就是我们千辛万苦要下载的主体,它里面装的全是Spring的jar包(别告诉我你不知道什么是jar包),可以点开看看,63个jar包,就问你怕不拍😂?没关系,后面我们再细说;
docs文件夹,文档文件夹,其实关于Spring中所有我们需要学习和掌握的内容都在这些文档里面可以找到答案。只要你英文好,熟悉开发文档格式,完全可以通过它进行学习。这是最好的、最权威的、最直接、还免费的资料!可惜……你懂的……哎……慢慢来吧……;
schema文件夹,Spring框架中所需的XML配置文件的结构说明都放在这个文件夹。这个文件夹我们使用量不高,因为这些文档在网络公开环境都有,而现代IDE(Integrated Development Environment — 集成开发环境,如:Eclipse、intellij等)都可以在开发过程中直接通过互联网对我们的XML配置文件进行自动检查,自动提示,所以几乎无需我们自己人工去看这些文档。

libs文件夹中的jar包

本章开篇就说了Spring是独立的第三方所开发的框架,要使用它必须把它的类导入到我们的工程中去,所以装满jar包的libs文件夹是我们的重头戏,接下来我们就来介绍一下。刚才点开过的同学,应该还记得初次见它的恐惧😱,足足有63个jar包在里面。但是,先别怕,我们观察一下这些jar包,按名称排个序吧。

有没有发现?63个jar包,其实是3个一组,一共有21组,每一组的命名都是如此的有规律。
spring-XXX-版本号.RELEASE-javadoc.jar    javadoc是什么?这是大名鼎鼎的APIDOC文档啊!
spring-XXX-版本号.RELEASE-sources.jar    sources呢?源代码呀,亲!
spring-XXX-版本号.RELEASE.jar    这里面才是我们开发时需要调用到的class文件(Java类文件)。
所以,其实我们直接需要使用的jar包不是63个,而是21个。另外,为了方便我们学习研究,Spring把APIDOC文档和源代码全部都给了我们。就问你,贴心不贴心?简直是真爱❤️啊!!!我一般都会专门新建一个文件夹,然后把这21个真正需要的jar包拷贝在一起,免得每次还要在libs文件夹里面选来选去的。
不过(话锋一转),21个jar包也不少啦。Spring不是号称”轻量级框架”吗?是不是所有的我们都能用上呢?如果都需要,为啥Spring不直接打成一个jar包呢?这就需要我们了解一下Spring框架的结构了。

Spring框架结构

我们在上一篇(一)Spring的由来与发展当中,描述过Spring框架的设计目标。再看一眼:Spring框架就像一个大容器一样,能够快速方便地集成各种应用(牢记:不仅仅是Web应用,就算一个普通的Java应用也可以)中各种现有技术,对它们进行支持,让开发人员在实现过程中感觉就像使用简单JavaBean一样,在必要的时候还能轻松完成同类框架和工具的替换。所以,我们可以看到Spring框架有那么多jar包,不同的jar包针对的是不同的应用。遇到哪一种需求,就加入相应的jar包;当然反之亦然,项目中要删除哪种需求,也可以减少对应的jar包。这里先贴出一张描述Spring框架结构的官网图片。

在图中,我们可以看到Spring框架被分离成了多个模块。各种应用可以选择它们所需要的模块部分。核心模块是一个叫“core”的容器,包括了配置模版和依赖注入机制(还记得这个词吗?IOC/DI)。在它之上,Spring框架还提供了针对不同应用领域的功能性支持,包括消息发送,事务数据和持久,以及Web应用。
大家可以先对应上图看看,都有哪些你认识(或者能猜到的)的模块?

Spring各jar包介绍

接下来,我就把Spring框架中21个jar包的作用罗列出来。大家现在不用较真,里面有些包甚至你一辈子都用不上。因为,上面说了不同的包支持的是不同应用的情况,如果你没有遇到这样的应用当然也不可能用得上😊。你们现在只需要知道以后可以在这里进行查阅,而具体的详细讲解,我们会在后面一个一个的学到(不要急~~~)。

jar包名称 具体作用说明
spring-aop-5.0.9.RELEASE.jar 使用Spring的AOP特性时所需的类和元数据支持。
spring-aspects-5.0.9.RELEASE.jar 提供对集成AspectJ的支持。
spring-beans-5.0.9.RELEASE.jar 是所有应用都要用到的,它包含访问配置文件、创建和管理bean 以及进行控制反转/依赖注入IoC/DI)操作相关的所有类。
spring-context-5.0.9.RELEASE.jar 在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持。
spring-context-indexer-5.0.9.RELEASE.jar 提供了索引功能,能再第一次扫描之后生成一个静态文件记录所有的组件,然后下一次扫描就直接读取文件中的内容,而不用再去执行扫描过程,从而提升启动运行速度。
spring-context-support-5.0.9.RELEASE.jar 包含支持缓存Cache(ehcache)、JCA、JMX、 邮件服务(Java Mail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。
spring-core-5.0.9.RELEASE.jar 包含Spring 框架基本的核心工具类。Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。
spring-expression-5.0.9.RELEASE.jar 提供了一个强大的Expression Language(表达式语言)用来在运行时查询和操作对象图。
spring-instrument-5.0.9.RELEASE.jar Spring对服务器的代理接口。
spring-jcl-5.0.9.RELEASE.jar 自带的通用日志封装 可替代了通用的日志,仍然支持可重写 。
spring-jdbc-5.0.9.RELEASE.jar 包含对Spring 对JDBC 数据访问进行封装的所有类。
spring-jms-5.0.9.RELEASE.jar 提供了对JMS(Java消息服务:Java Message Service)的支持类。
spring-messaging-5.0.9.RELEASE.jar 为集成messaging api和消息协议提供支持。
spring-orm-5.0.9.RELEASE.jar 对DAO特性集进行了扩展,整合第三方的ORM(对象关系映射)框架实现。
spring-oxm-5.0.9.RELEASE.jar 对OXM(Object/XMl的映射)支持,可以让Java与XML之间来回切换。
spring-test-5.0.9.RELEASE.jar 对Junit等测试框架的简单封装。
spring-tx-5.0.9.RELEASE.jar 为JDBC、Hibernate、JDO、JPA、Beans等提供的一致的声明式和编程式事务管理支持。
spring-web-5.0.9.RELEASE.jar 包含Web 应用开发时,用到Spring 框架时所需的核心类,包括自动载入Web ApplicationContext 特性的类、Struts 与JSF 集成类、文件上传的支持类、Filter 类和大量工具辅助类。
spring-webflux-5.0.9.RELEASE.jar Spring WebFlux是Spring Framework 5中引入的新的反应式Web框架。与Spring MVC不同,它不需要Servlet API,完全异步和非阻塞, 并通过Reactor项目实现Reactive Streams规范。
spring-webmvc-5.0.9.RELEASE.jar 包含Spring MVC 框架相关的所有类。
spring-websocket-5.0.9.RELEASE.jar 提供 Socket通信, web端的推送功能。

结语

现在,我们的电脑上已经从官网获取了Spring框架的所有jar包和官方文档了(😭,可惜是全英文的,看来英文真是很重要)。但光有这些明显还不够,我们还是没有一个直观的认识,只是知道Spring框架真强大,提供了这么多东西,但到底该如何用呢?那么下一章,我们将搭建一个最基本的Spring程序(就是传说中的“Hello World”😊)让大家能够感性的认识一下吧。