书名:Spring Boot 3:入门与应用实战
ISBN:978-7-115-66747-2
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 LinkedBear
责任编辑 单瑞婷
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
随着JDK的升级与迭代,Spring Framework与Spring Boot也分别升级到了全新的6.0与3.0版本,全新的版本带来了更加强大的功能和特性。本书侧重于核心功能和特性的讲解,重点讲解Spring Framework与Spring Boot在应用开发中的核心与应用,通过多个方面介绍应用开发中涉及的场景。
本书分为六个部分,共15章。第一~三部分介绍Spring Framework与Spring Boot的基础与核心机制,包括IOC、AOP、Spring Boot应用特性;第四部分讲解基于Spring Boot的WebMvc应用开发;第五部分对Dao层整合开发进行讲解;第六部分则是Spring Boot的应用打包和生产级特性。
阅读本书之前,建议读者至少对Java Web有一定的了解。本书适合想要迅速上手Spring Framework和Spring Boot的入门级开发者,也适合想要深入提升Java开发能力的初级或中级开发者。
Spring Framework和Spring Boot已然是当下构建Java Web应用的首选,其强大的容器和应用特性,再加上优异的第三方技术整合能力,使得Spring Framework和Spring Boot稳坐Java Web应用开发的头把交椅。在出版《Spring Boot源码解读与原理分析》之后,不少读者提出,源码解读的阅读难度较大,对部分还不完全熟悉Spring Framework和Spring Boot的读者而言更是难上加难。为此,作者经过深思熟虑,并考虑到在撰写本书期间Spring Framework与Spring Boot的版本更新,决定以Spring Framework 6.x与Spring Boot 3.x为基础,重新编写一套从零开始学习的系列书,旨在帮助读者了解、掌握Spring Framework与Spring Boot,并对新版本中引入的核心特性进行讲解。作者期望那些刚刚完成Java Web学习的初学者能够借助本书学习Spring Framework与Spring Boot,同时希望那些实战经验尚浅的开发者能够利用本书巩固自身基础并弥补知识空缺。此外,作者也希望那些致力于深入研究的进阶学习者能够借助本书进一步深入了解Spring Framework与Spring Boot的全貌。
本书分为六个部分,分别介绍Spring Framework的IOC容器(第1~4章)、Spring Boot应用构建与核心特性(第5章、第6章)、Spring Framework的AOP(第7章、第8章)、基于WebMvc的Spring Boot Web应用开发(第9~第11章)、Spring Boot的数据访问能力整合(第12章、第13章),以及Spring Boot应用的生产与运维(第14章、第15章)。具体安排如下。
第1章从整体层面概述了Spring Framework以及它的发展历史、组成结构、生态核心成员等,总体内容以介绍为主。
第2章从原生Servlet的三层架构开始推演IOC思想,讲解不同IOC容器的特性及使用方式,以及IOC思想的两种实现方式:依赖查找与依赖注入。
第3章讲解IOC容器中的Bean组件,主要从Bean的类型、作用域、实例化方式和基本生命周期等方面展开介绍。
第4章重点讲解IOC容器的设计与机制,包括BeanFactory、ApplicationContext、IOC容器的事件驱动、装配机制、组件注册与扫描机制、PropertySource等。
第5章开始讲解Spring Boot,我们通过一个简单示例接触Spring Boot,并简单分析Spring Boot应用构建的两大利器:依赖管理与自动装配。
第6章从多个方面讲解Spring Boot的最佳实践,包括属性配置、外部化配置、Banner机制、日志的使用、异常分析等,还介绍了Spring Boot应用启动过程的简单扩展点和场景启动器。
第7章开始讲解Spring Framework的另一个核心特性:AOP。我们基于IOC思想的推演示例继续推演AOP思想,并介绍AOP中涉及的术语,演示基于Spring Boot和Spring Framework的AOP的使用方式。
第8章讲解AOP机制的更多细节,包括AOP联盟、通知方法参数、切面的执行顺序等。
第9章进入Web应用的开发,从Java Web应用逐步过渡到基于Spring Boot的WebMvc应用开发,并介绍和演示WebMvc中比较简单且常用的机制和使用方法。
第10章介绍WebMvc的更多进阶和高级机制,包括拦截器、国际化支持、跨域等,此外还针对REST服务的调用和Servlet原生组件进行演示。
第11章讲解Spring Boot运行Web应用背后的功臣——嵌入式容器,主要介绍和讲解Spring Boot整合嵌入式容器的使用、配置、替换等。
第12章开始接触Dao层开发,我们使用Spring Boot整合基础的spring-jdbc,完成Dao层的简单开发和事务控制。
第13章介绍Spring Boot与MyBatis、MyBatis-Plus框架的整合,以替代原生JDBC工具类操纵关系型数据库。
第14章开始进入生产与运维阶段,我们会了解开发完Spring Boot应用后如何打包和制作Docker镜像。
第15章重点讲解Spring Boot提供的生产级特性——监控,介绍Spring Boot原生提供的Actuator、监控端点Endpoints、监控指标Metrics,还介绍接入可视化管理的Prometheus+ Grafana的成熟监控体系。
本书是一本倾向于入门、熟悉和使用的图书,读者可以完全不了解 Spring Framework和Spring Boot,仅需要具备最简单的Java Web开发基础即可。因此本书更适合以下人群阅读:
● 完成Java Web基础阶段学习,想要接触框架学习的读者;
● 有Spring Boot、Spring Framework的使用基础,想要掌握更多核心特性的读者;
● 有实际的项目开发经验,想扩展Spring体系知识面的读者;
● 期望进阶到技术总监、架构师等高级技术岗位的开发者;
● 有意向深入探究Spring生态的研究者。
本书中出现的部分名词受作者主观表述方式的影响,可能会出现多种不同的叫法,以下是部分专有名词的映射关系。
● Spring Framework:指Spring框架,简称Spring。
● WebMvc:指Spring MVC,Spring WebMvc也是如此。
● Bean:Spring Framework中管理的组件对象(概念)。
● bean:容器中真实存在的组件对象实例。
● IOC容器:泛指ApplicationContext,当上下文讲解BeanFactory时,则指代BeanFactory。
● Web容器:Servlet容器与NIO容器的统称,不仅限于Tomcat、Jetty等Servlet容器。
在展示测试代码或框架源码的片段中,考虑到部分代码的篇幅和长度问题会受纸质图书的呈现方式影响,会对部分代码进行折叠或换行处理,对涉及源码的部分视情况进行省略或删减,读者在阅读时可适当结合IDE阅读,以达到最好的阅读效果。
在编写本书期间Spring Framework的最新正式版本为6.1.x,Spring Boot的最新正式版本是3.2.x。时至定稿日,Spring Framework和Spring Boot的版本已分别更新到6.2.x与3.3.x。考虑到Spring Framework 6.2与Spring Boot 3.3中更新的特性没有特别值得讲解的部分,最终本书定稿时所采用的Spring Framework基准版本为6.1.2,Spring Boot基准版本为3.2.1,在没有特别说明版本时,本书中引用的源码均基于Spring Framework 6.1.2与Spring Boot 3.2.1。
Spring Boot和Spring Framework在当下的应用范围甚广,升级到新版本后更是出现大量改动。虽然作者在编写本书时已经对每个知识点反复研究、测试和推敲,力求讲解得尽可能正确、精准、易懂,但作者本人的技术水平有限,还是不敢保证所有内容都没有错误。如果读者发现本书中有任何错误,或者想给本书及作者提供任何建议,欢迎通过以下方式与作者取得联系,以便及时修订本书。
● 邮箱:LinkedBear@163.com。
● 微信公众号:Spring引路熊导师。
● 博客:http://site.linkedbear.top。
本书的勘误情况将发布在微信公众号与博客中,请各位读者及时关注,以便获取最新的信息。
创作本书是对自己的又一次挑战,与自己更擅长的原理分析不同,从零开始系列书更侧重于技术学习初期的“领进门”,讲会、讲懂、讲明白是第一要义。本书的体量更加庞大,创作本书的过程更是非常漫长。在此过程中,我的家人一直在背后默默地支持着我,使我得以全心投入于本书的编写,并最终促成其顺利出版。在此,我衷心祝愿他们健康、平安!
本书得以顺利出版,离不开人民邮电出版社编辑团队的鼎力相助,尤其是与我对接的傅道坤老师和单瑞婷老师,两位老师从专业图书编辑的角度,在本书撰写过程中给予了非常宝贵的建议、指点和支持。感谢编辑老师们的辛勤付出,谢谢你们!
还要感谢在本书撰写过程中帮助过我的读者朋友。本书脱胎于掘金小册,在整合、重写、升级,以及后续的宣传推广和阅读反馈环节,得到了众多小册读者的大力支持和宝贵意见。他们不仅是本书的坚实后盾,而且正是由于他们宝贵的反馈和建议,本书才能做到内容覆盖多样、讲解清晰透彻、内容主次分明。
最后要感谢的是正在阅读本书的你。感谢你选择本书作为陪伴你学习Spring Framework和Spring Boot的“好伙伴”,希望在本书的支持下,你能在学习Spring Framework和Spring Boot时汲取尽可能多的方法、思想。愿本书能给正在阅读的你带来帮助,祝你阅读愉快、学习顺利、前程似锦!
苏振志(LinkedBear)
2024年6月
本书提供如下资源:
● 本书配套PPT;
● 本书配套视频;
● 本书源代码;
● 本书思维导图;
● 异步社区7天会员。
要获得以上资源,您可以扫描下方二维码,根据指引领取。
我们的联系邮箱是shanruiting@ptpress.com.cn。
如果您对本书有任何疑问、建议,或者发现本书中有任何错误,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们。
如果您所在的学校、培训机构或企业想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”(www.epubit.com)是由人民邮电出版社创办的IT专业图书社区,于2015年8月上线运营,致力于优质内容的出版和分享,为读者提供高品质的学习内容,为作译者提供专业的出版服务,实现作者与读者在线交流互动,以及传统出版与数字出版的融合发展。
“异步图书”是异步社区策划出版的精品IT图书的品牌,依托于人民邮电出版社在计算机图书领域多年的发展与积淀。异步图书面向IT行业以及各行业使用IT技术的用户。
► 第1章 Spring Framework入门
► 第2章 IOC思想与实现
► 第3章 IOC容器中的Bean
► 第4章 IOC容器的设计与机制
❏ Spring Framework概述;
❏ Spring Framework的发展历史;
❏ Spring Framework的组成结构;
❏ Spring生态核心成员。
回顾Spring Framework的历史已经有二十余载,从最初既烦琐又复杂的EJB开发到如今使用Spring Framework和Spring Boot就能快速搭建和开发应用,Spring家族可谓功不可没。如今的Java EE开发中掌握Spring已经成为一个开发者的必备技能,业界很有名的“Spring全家桶”也是目前主流的技术体系之一。在笔者的另一本图书《Spring Boot源码解读与原理分析》中也反复提到,Spring Boot的成功依托于Spring Framework的优秀基础,所以在本书的起始我们需要先对Spring Framework有一个基本的认识和了解。
了解一门技术,首先要知道它是什么、都有什么、能做什么,而了解这些内容的最直接方式之一是借助官方网站和文档。从Spring的官方网站中找到Spring Framework的项目主页,可以发现如下描述。
The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications on any kind of deployment platform.
A key element of Spring is infrastructural support at the application level: Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments.
Spring Framework为任何类型的部署平台上的基于Java的现代企业应用程序提供了全面的编程和配置模型。
Spring的一个关键要素是在应用程序级别提供基础架构支持:Spring专注于企业应用程序的“脚手架”,以便团队可以专注于应用程序级别的业务逻辑,而不必与特定的部署环境建立不必要的关联。
上述描述的内容中包含诸多要素,下面对其中的一些关键词做基本解释,方便读者更好地理解这段话的含义。
● 任何类型的部署平台:无论是操作系统,还是Web容器(如Tomcat等),都可以部署基于Spring Framework的应用。
● 企业应用程序:包含Java SE和Java EE在内的一站式解决方案。
● 编程和配置模型:基于框架进行编程,以及通过框架完成功能和组件的配置。
● 基础架构支持:Spring Framework不包含任何业务功能,它只是一个底层的应用抽象支撑。
● 脚手架:使用它可以更快速地构建应用。
另外,从网络上流传比较多的、认可度相对较高的概述中,我们也能发现一些新的关键词。
Spring Framework是一个分层的、Java SE/Java EE的一站式轻量级开源框架,以IOC和AOP为内核,提供表现层、持久层、业务层等领域的解决方案,同时还提供了整合第三方开源技术的能力。
Spring Framework是一个Java EE编程领域的轻量级开源框架,它是为了解决企业级编程开发中的复杂性、实现敏捷开发的应用型框架。Spring Framework是一个容器框架,它集成了各个类型的工具,通过核心的IOC容器实现了底层的组件实例化和生命周期管理。
Spring Framework是一个开源的容器框架,核心是IOC和AOP,它为简化企业级开发而生。Spring Framework有诸多优良特性(非侵入、容器管理、组件化、轻量级、一站式等)。
观察、品味这些概述,并且与官方文档中的描述进行比对,可以提取如下几个关键词。
● 轻量级:相较于重量级框架,它的规模更小(可能只有几个jar包)、消耗的资源更少。
● IOC和AOP:这是Spring Framework的两大核心特性,即控制反转(Inverse of Control,IOC)和面向切面编程(Aspect Oriented Programming,AOP)。
● 整合第三方开源技术:Spring Framework可以很方便地整合第三方技术(如持久层框架MyBatis/Hibernate、表现层框架Struts2、权限校验框架Shiro等)。
● 容器:Spring Framework的底层有一个管理对象和组件的容器,由它来支撑基于Spring Framework构建的应用的运行。
● 一站式:覆盖企业级开发中的所有领域。
综合以上的官方权威概述和开发者的经验总结,本书也试着提取和总结一个尽可能表述完整且精简的概述:
Spring Framework是一个开源的、松耦合的、分层的、可配置的一站式企业级Java开发框架,它的核心是IOC与AOP,它可以更容易地构建企业级Java应用,并且可以根据应用开发的组件需要,整合对应的技术。
简单解释一下如此概括的要点。
● 加入“松耦合”的概念是为了强化IOC和AOP的描述(两者都是降低耦合的手段)。
● 加入“可配置”是为了给Spring Boot垫底(Spring Boot非常重要的特性之一)。
● IOC和AOP可提可不提,只要是对Spring有最基础了解的读者都应该知道。
● 没有提“轻量级”,是考虑到现在大环境的趋势已没有EJB的身影。
● 没有提“容器”的概念,是因为Spring Framework不仅仅是一个容器,如果只限定在容器层面,那相当于收窄含义。
● 注意对比“企业级Java开发”与“Java EE开发”的区别:Spring Framework不仅能构建Web项目,也可以构建和开发普通的Java SE项目、GUI项目。
总的来看,Spring Framework是一个功能极其强大的基础型框架,其设计考虑之周全,决定了几乎任何Java应用都可以从Spring Framework中受益。
Spring Framework的发展过程非常漫长,最早要回到1997年,美国著名的IT公司IBM面对企业应用的J2EE(现在的Java EE,2021年更名为Jakarta EE)开发时,制定出了一套技术思想,称为EJB(Enterprise JavaBean),并且对外宣称企业级应用开发就应该按照EJB的思想来开发,使用EJB是一个标准的、规范的开发方式。
后来EJB思想被Sun公司(Java的创始公司)相中,并在1998年以规范的形式整合进Java体系中,与当时J2EE的其他技术规范一起联合(包括JMS、JNDI、JSP等),合称为“J2EE开发的核心技术”。随后,IBM公司的开发者将EJB规范加以实现,并在2002年更新2.0版本,在当时的J2EE开发中可谓红极一时,各大公司团队都以EJB作为企业级开发的标准。
EJB虽然很强大,但EJB的实现本身是个重量级框架,对应用业务的代码侵入度较高,并且伴随着高昂的学习成本和开发成本,这使得使用EJB的开发者经常叫苦不迭。不过即便如此,当时业界的开发者也没有更好的解决方案,所以只能一边叫苦,一边含泪使用。
整个僵局在2002年被打破,一位名叫Rod Johnson的开发者出版了一本图书:Expert One-on-One J2EE design and development,里面对当时现有的J2EE应用的架构和框架存在的臃肿、低效等问题提出了质疑,并且积极寻找和探索解决方案。两年后的2004年3月,Spring Framework 1.0.0横空出世,随后的2004年6月,Rod Johnson又写了一本书,在当时的J2EE开发界引起了巨大轰动,它就是著名的Expert one-on-one J2EE Development without EJB,这本书中直接告诉开发者完全可以不使用EJB开发J2EE应用,而是换用一种更轻量级、更简单的框架,那就是Spring Framework。
Spring Framework在最初创立时就不是为了站在J2EE开发的对立面,而是借助IOC和AOP的思想,对J2EE的开发方式予以补充。除此以外,Spring Framework提供的底层模块和特性都比EJB好。虽然EJB 3.0开始提出了更轻量化的方式(Entity Bean和Session Bean),但在当时EJB大势已去,基于Spring Framework的J2EE开发已经成为行业标准。
时至今日,Spring Framework已经发展到6.x版本,按照时间排序,Spring Framework的版本迭代如表1-1所示。
表1-1 Spring Framework的版本迭代
Spring Framework版本 |
发行时间 |
对应JDK版本 |
重要特性 |
---|---|---|---|
Spring Framework 1.x |
2004年3月 |
JDK 1.3 |
基于XML的配置 |
Spring Framework 2.x |
2006年10月 |
JDK 1.4 |
改良XML文件、初步支持注解式配置 |
Spring Framework 3.x |
2009年12月 |
Java 5 |
注解式配置,JavaConfig编程式配置、Environment抽象 |
Spring Framework 4.x |
2013年12月 |
Java 6 |
Spring Boot 1.x、核心容器增强、条件装配、WebMvc基于Servlet 3.0 |
Spring Framework 5.x |
2017年9月 |
Java 8 |
Spring Boot 2.x、响应式编程、Spring WebFlux、支持Kotlin |
Spring Framework 6.x |
2022年11月 |
Java 17 |
Spring Boot 3.x、AOT编译、GraalVM支持、Spring Native |
|
Spring Framework项目同时维护了最新的6.x,以及较早的5.x甚至4.x,其中当前主流的版本又包含不同类型的小版本,它们都代表着不同的含义,本节将予以补充。 ● GA:正式版本,代表正式发行的可用版本,在实际的项目开发中必须使用GA版本,从Maven/Gradle中获取的依赖也是GA版本。 ● CURRENT:最新版本,代表最新发行的正式版本,包含最新发布的特性、Bug修复等,在实际项目开发中要避免使用。通常在项目开发中选择的版本都是有一定用户规模的稳定版本,避免使用太新的版本,防止可能存在的潜在漏洞导致出现意外。 ● SNAPSHOT:快照版本,代表团队迭代的还没有正式发布的版本,一般情况下快照版本中会存在一些可以被发现的Bug,开发团队会在发布SNAPSHOT版本后的一段时间内收集Bug信息并予以修正,之后发布对应的正式版本。 ● M1、M2等:里程碑版本,代表一个版本的预览版本,在此类版本中,会推出新特性、修改大量问题并进行性能优化等。 ● RC1、RC2等:候选发行版本,同样是预览版本,但从生命周期角度来看要晚于里程碑版本。 |
Spring Framework是一个分层的架构,它包含一系列核心要素,并大体分为若干模块。以下简单描述这些核心模块的含义及作用。
(1)IOC 及 IOC 容器
Spring Framework的底层核心是一个容器,由于其充分体现了IOC的特性,因此又被称为IOC容器。IOC部分包含Spring Framework最基础的核心代码core、与组件对象相关的beans、与容器上下文相关的context,以及支持SpEL表达式相关的expression模块。整个IOC模块是Spring Framework的基础,后续的所有模块都建立在此之上。
(2)AOP
AOP是基于面向对象编程(OOP)的补充,它可以支持开发者定义一些方法的切入点和增强器,用于将一些通用逻辑代码与业务功能代码相分离,降低其耦合度。由于AOP建立在IOC模块的基础上,因此能够充分利用IOC容器和Bean组件的特性,使得容器中所管理的bean对象都可以支持AOP。
(3)数据访问
对绝大部分的应用程序而言,主要关注的问题就是与数据库、数据存储的访问和操作。Spring Framework没有局限于针对某一种数据存储类型的场景做文章,而是以一个更高的层次,通过抽取 jdbc、orm、tx 等模块,制作了一套访问关系型数据库的通用抽取模板,通过引入模板的设计和思想将数据访问变得非常简单。此外,借助AOP的思想,Spring Framework还提供了声明式事务等功能。
(4)Web
Spring Framework在整合Web环境中也有对应的WebMvc和WebFlux技术实现,通过引入不同的模块,可以实现基于传统Servlet API的WebMvc开发,或者完全不依赖Servlet API的WebFlux实现响应式Web开发;另外通过引入不同的页面和模板引擎,可以使得Spring Framework支持多种视图层技术。此外,基于HTML5规范的WebSocket也在Spring Framework 4.0中予以支持。
(5)测试
测试是企业应用开发不可或缺的一部分,Spring Framework通过整合不同的单元测试框架,可以实现简单高效的代码单元测试;借助IOC容器和Web相关特性支持,可以在开发Web项目中实现集成测试。
打开Spring的官网项目列表页,可以看到Spring生态的众多项目成员,这些项目共同组成了一个非常健全且强大的企业级应用开发解决方案。除了本书重点讲解的Spring Framework和Spring Boot,微服务解决方案Spring Cloud、整合系生态成员Spring Data、Spring Security等都是非常优秀的单一领域解决方案。为了能让读者对Spring生态的核心成员有一个大体的了解,下面以表格形式对其中重要的项目进行简单介绍,如表1-2所示。
表1-2 Spring生态的核心成员简介
项目名称 |
简单介绍 |
---|---|
Spring Boot |
基于Spring Framework的应用快速开发工具,用来简化Spring应用的开发过程,核心特性包括场景启动器、自动装配、约定大于配置、嵌入式容器、生产级特性 |
Spring Cloud |
微服务应用开发解决方案,提供服务注册、负载均衡、熔断限流、配置管理、链路追踪等能力。本身是一系列技术的组合,以整套方案的形式输出 |
Spring Data |
简化不同种类数据存储的数据访问和交互,提供相对统一的编码方式和风格抽象,子模块包括Spring Data JDBC、Spring Data JPA、Spring Data Redis、Spring Data Elasticsearch、Spring Data MongoDB等 |
Spring Security |
安全访问控制解决方案,提供了基于Spring应用的配置组件,实现声明式安全访问控制 |
Spring Session |
提供基于外置独立于容器的Session管理,支持多种存储的Session存储和管理方式 |
Spring AMQP |
基于AMQP的消息解决方案,提供模板化交互抽象层和消息驱动的模型 |
为了读者能顺利地向下阅读,学习Spring Framework和相关技术的使用,需要先行准备Java开发环境和开发工具。本书使用的Java开发环境及工具介绍如表1-3所示。
表1-3 本书使用的Java开发环境及工具介绍
工具名称 |
版本 |
简介 |
---|---|---|
JDK |
17.0.2 |
Java开发工具集 |
Maven |
3.6.3 |
项目管理和构建工具,用于管理项目依赖和构建 |
IntelliJ IDEA |
2023.2.5 Ultimate |
优秀的开发工具,学习时使用社区版即可,笔者使用的是付费订阅的专业版 |
下面逐个准备和安装。笔者在编写本书时使用的操作系统为Windows 10,故如无特殊说明,本书中所有的操作均基于Windows 10演示。
安装JDK时读者可以选择使用Oracle官方提供的JDK,也可以选择OpenJDK。由于2019年Oracle JDK调整了商业策略,不允许被用于商业用途,所以本书使用的是OpenJDK。从Oracle官网就可以找到OpenJDK 17的下载安装包,按照以下步骤下载安装即可。
(1)下载OpenJDK压缩包,下载的位置如图1-1所示。
图1-1 下载OpenJDK 17安装包
(2)将压缩包解压至一个没有中文名的目录中(笔者解压的位置可供参考,如图1-2所示)。
图1-2 解压JDK压缩包至无中文名目录
(3)新建环境变量JAVA_HOME
,它的值为上一步解压的文件夹路径;修改环境变量PATH
,新建项并输入值“%JAVA_HOME\bin
”。
如此操作后,JDK即安装完毕,读者可打开cmd,输入java -version
检查安装是否正确,当正确输出JDK的版本时即代表安装成功。
对于基于Spring Framework的项目,可以使用Maven或者Gradle构建,本书涉及的所有项目均使用Maven来构建。由于本书选择使用IDEA作为开发工具,而IDEA中已经集成了Maven,因此可以不用安装Maven(当然前提是不介意IDEA把项目依赖的jar包下载到C盘)。笔者在搭建开发环境时选择单独安装Maven 3.6.3作为外置Maven运行,这样做的目的是可以更方便地修改配置和全局使用。
|
在安装和使用Maven之前,请务必完成JDK的安装和环境变量配置,否则会导致Maven无法正常工作。 |
从Maven的官方网站中找到Maven 3.6.3版本的zip包,下载并解压到没有中文名的目录下,之后将解压的目录全路径复制,并配置到环境变量的PATH
中(操作方式与安装JDK类似)。
最后我们进入Maven的安装目录,找到conf
文件夹下的settings.xml
文件,这是Maven运行时会加载的配置文件,我们需要配置Maven的仓库位置(防止将所有依赖的jar包下载到C盘),以及指定使用阿里云的镜像仓库(官方的中央仓库加载速度较慢,国内使用阿里云的镜像仓库会快很多)。相关的配置如代码清单1-1所示。
代码清单1-1 Maven的settings.xml配置文件
<localRepository>E:/maven/repository</localRepository> <mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>https://maven.aliyun.com/repository/public/</url> </mirror> </mirrors>
本书在编写时全程使用IntelliJ IDEA作为开发工具,读者可以直接从JetBrains的官方网站下载IDEA的安装包并安装即可。安装完毕后,建议安装以下几个插件,以便后续的开发。
● AspectJ:支持AOP开发。
● Lombok:简化代码。
● MyBatisX:辅助MyBatis整合开发。
本章简单介绍了Spring Framework的概况、发展历史、核心模块以及生态体系的重要成员。Spring体系中最核心的基础就是Spring Framework,掌握它之后,在后续学习Spring Boot以及相关技术整合时都会变得更加轻松。
本章没有实际开始Hello World项目编写,因为第2章中需要用一个场景推演来让读者亲自体会Spring Framework的核心思想之一:控制反转。