跳转至

快捷学习Spring#

约 3472 个字 2 张图片 预计阅读时间 69 分钟

序言#

Spring 框架诞生于 2000 年代初,作为 EJB 的替代方案。凭借其简洁的编程模型、丰富的功能以及对第三方库的集成,Spring 很快就超越了竞争对手。多年来,Spring 生态系统不断壮大,已经成为所有编程语言中最广泛、最成熟的开发框架。自从 Oracle 停止推进 Java EE 8 的发展后,其主要竞争对手也退出了舞台,社区通过 Jakarta EE 接手了维护工作。

根据最近的调查(http://mng.bz/l9VBhttp://mng.bz/B1Ar),Spring 已经成为超过一半 Java 应用的基础框架。这也意味着,庞大的代码库让每一位 Java 开发者都必须掌握 Spring,因为在你的职业生涯中,几乎不可避免会接触到这项技术。我自己已经用 Spring 开发了 15 年应用,如今我为数百家公司培训的团队几乎都在使用 Spring。

现实情况是,尽管 Spring 如此流行,但高质量的入门资料却非常稀缺。官方文档长达数千页,涵盖了各种细节和微妙之处,适合非常特定的场景,对于初学者来说并不友好。网络上的视频和教程往往难以真正吸引学习者,而市面上很少有书籍能够准确把握 Spring 框架的精髓,反而常常花大量篇幅讨论一些在现代应用开发中并不重要的话题。然而,这本书几乎没有可以删减的内容,所涵盖的每一个概念,都是开发 Spring 应用时反复遇到的核心主题。

本书以循序渐进的方式,引导读者迅速掌握足以高效参与基于Spring框架项目的能力。根据我培训数千名员工的经验来看,如今大多数使用Spring的开发者,并没有像本书这样清晰地理解相关理念。此外,许多开发者也并不了解本书所提醒的各种常见陷阱。在我看来,这本书对于任何刚开始接触Spring项目的开发者来说,都是必读之作。

Laurenţiu对读者心中常见问题的提前预判,充分展现了他在课堂上教授Spring的丰富经验。这种娴熟的教学能力,使作者能够采用一种亲切、温暖的语气,让本书的阅读变得轻松愉快。全书结构清晰明了,我尤其喜欢作者如何循序渐进地揭示和讲解复杂主题,并在后续章节中不断加以重申和深化。

本书的亮点在于,它不仅让读者了解了使用 Spring 框架维护遗留项目时需要关注的核心问题。在如今 Spring Boot 占据主导地位的生态环境下,能够深入了解底层实现无疑非常有价值。同时,书中还循序渐进地引入了诸如 Feign 客户端、响应式编程等新一代技术,让读者能够轻松上手。

祝你阅读愉快!遇到复杂问题时,别犹豫,勇敢动手写点代码吧。

—— 维克多·伦特亚

Java冠军、培训师与顾问

前言#

分享知识和制作学习资料对我来说是一种兴趣爱好。除了是一名软件开发者,我还是一名教师。自2009年以来,我一直担任Java讲师,已经为成千上万不同经验水平的开发者教授过Java课程,学生既有大学生,也有大型企业的资深开发者。过去几年里,我越来越认为Spring是初学者必学的内容。如今的应用开发早已不再只是用原生语言来实现——几乎所有项目都依赖于各种框架。而Spring作为当今Java领域最流行的应用框架,已经成为开发者在软件开发入门阶段必须掌握的技能。

在教授初学者学习 Spring 的过程中,我发现大家依然把 Spring 当作只有有了一定编程经验后才能学的东西。当我开始写《Spring Start Here》这本书时,市面上其实已经有很多关于 Spring 的教程、书籍和文章了,但我的学生们还是经常跟我说,那些资料很难理解。我意识到,问题并不是现有的学习资料不够优秀,而是缺少一本真正为零基础初学者量身打造的学习指南。所以我决定写这样一本书——它不把 Spring 视为只有有经验后才能学的技术,而是让你只需具备最基础的知识,也能轻松入门。

技术变化迅速。但不仅技术在变,我们还需思考如何改进技术教学方式。几年前,人们先学语言基础,便可入职开发,却对框架一无所知。如今情况不同:仅在前期掌握语言所有细节,已无法快速获取团队开发所需技能。我建议开发者先打牢基础,待熟练后再学习应用框架。在我看来,Spring 是最适合入门的应用框架。理解 Spring 基础,不仅为学习其他技术打开大门,也将传统的线性学习方式转变为更像树状结构——每一分支都是与其他框架并行学习的新领域。

我编写《Spring Start Here》这本书,就是希望它能成为你学习Spring框架的起点。本书将带你一步步深入,系统讲解所有核心理论知识,并配以实际案例,帮助你将所学内容应用到实践中。我希望这本书能为你带来真正的价值,助你快速提升对Spring的理解,并为后续的深入学习打开大门。

关于这本书#

既然你已经翻开了这本书,我猜你是一位在Java生态系统中工作的软件开发者,并且意识到学习Spring是非常有用的。本书将带你从零开始学习Spring的基础知识,假设你对各种框架,当然也包括Spring,完全不了解。

你将首先了解什么是框架,然后通过实际案例,逐步掌握Spring的基础内容。你不仅会学会如何使用Spring框架的各个组件和功能,还会了解这些功能背后的一些核心原理。掌握在使用某个组件时框架的内部运行机制,有助于你更好地设计应用程序,并更高效地解决问题。

读完本书后,你将掌握以下在实际开发中非常重要的技能:

  • 配置和使用Spring上下文及依赖注入
  • 设计和使用切面
  • 开发Web应用
  • 实现应用之间的数据交换
  • 数据持久化
  • 实现测试

本书对以下场景非常有帮助:

  • 在工作中参与基于Spring的应用开发
  • 通过Java开发岗位的技术面试
  • 获得Spring相关认证

尽管本书的首要目的并非帮助你备考Spring认证,但我认为在深入学习认证考试所需的细节之前,这本书绝对值得一读。

谁适合阅读本书#

本书适合那些已经掌握了面向对象编程和Java基础概念,并希望学习Spring或巩固Spring基础知识的开发者。你不需要有任何框架的使用经验,但需要了解Java,因为本书中的所有示例都将使用Java语言。

Spring是Java应用中最常见的技术之一,未来的使用频率只会越来越高。对于Java开发者来说,Spring已经成为必备技能。通过学习本书的内容,你不仅可以提升自己的技能,还能打下坚实的Spring基础,无论是顺利通过Java面试,还是参与基于Spring技术的应用开发都将游刃有余。此外,本书也为你进一步深入学习更复杂的Spring知识奠定了基础。

阅读路线图#

本书共分为两大部分,涵盖15章内容。我们会在第一部分通过一些简单明了的示例,带你了解如何让Spring感知你的应用。接下来,我们会逐步构建示例,帮助你掌握任何真实Spring应用的核心原理。在掌握Spring核心基础后,我们还会介绍Spring Data和Spring Boot的基本用法。

从第2章开始直到全书结束,你会发现每个理论知识点都配有实际项目,我们会在项目中应用所讲的内容。我会逐段讲解示例代码,建议你在阅读时跟着我一起动手实践,然后将你的结果与我的方案进行对比。

如下图所示,本书各章节的安排是按照既定顺序设计的。第2章到第5章主要讲解Spring上下文,这部分的示例可能偏重理论。对于缺乏Spring经验的读者来说,这样的入门方式非常重要。别担心!我会用最简单易懂的方式讲解基础知识,之后的示例和讨论也会逐步深入,最终带你写出贴近真实生产环境的代码。


图1 如果你对Spring几乎不了解(或者了解很少),最好的阅读方式是从第一章开始,按顺序阅读全书。

如果你已经对 Spring 上下文和 Spring AOP 有了充分的了解,可以跳过第 1 部分,直接进入第 2 部分“实现”(第 7–15 章),如下图所示。


图2 如果你已经掌握了Spring框架的基础知识,并且了解如何使用Spring上下文和设计切面,可以直接从第二部分开始。在这一部分,我们将利用Spring的功能实现一些应用程序,这些应用场景正是你在实际系统中会遇到的。

读完本书后,你将掌握许多专业开发应用的技能。你会学到当下最常用的数据库连接方法,还会了解如何让不同的应用程序实现互相通信。最后,我们将以一个至关重要的话题——测试——作为本书的收尾。在内容中,我还会穿插一些自己的经验故事和实用建议,帮助你更好地理解和应用所学知识。

请记住,Spring 是一个庞大的生态体系,一本书无法涵盖它的全部内容。通过本书,你可以入门该框架,并掌握使用 Spring 重要组件的基础技能。在全书中,我会在适当的地方推荐其他资源和书籍,这些资料对我们讨论的主题有更深入的讲解。我强烈建议你阅读这些补充资源和书籍,以拓宽你对相关主题的理解和视野。

关于代码#

本书提供了大约70个项目,我们将在第2章到第14章中逐步完成。在讲解具体示例时,我会提到对应项目的名称,这些项目实现了相关示例。我的建议是,先尝试自己从零编写示例代码,然后再参考书中提供的项目,将你的解决方案与我的进行对比。这样的学习方式能帮助你更好地理解所学的概念。

每个项目都是用 Maven 构建的,因此可以轻松导入到任何 IDE 中。我本人使用 IntelliJ IDEA 编写这些项目,但你也可以选择在 Eclipse、Netbeans 或其他你喜欢的工具中运行它们。附录 F 为你介绍了推荐使用的工具。

本书包含大量源代码示例,既有编号代码清单,也有嵌入正文的代码。在这两种情况下,源代码均使用固定宽度字体呈现,例如这样,以区别于普通文本。有时,为突出与本章前面步骤相比发生变化的代码(如新增功能对现有代码行的修改),部分代码还会加粗显示。在许多情况下,原始源代码已重新排版,我们添加了换行并调整了缩进,以适应书页的排版空间。个别情况下,即便如此也无法完全容纳,代码清单中便加入了换行标记(➥)。此外,代码中的注释在大多数示例中已被移除,因相关说明已在正文中进行讲解。许多代码清单还配有注解,用于强调关键概念。

liveBook讨论论坛#

购买《Spring Start Here》即可免费获得由 Manning 出版社运营的专属网络论坛访问权限。在这里,你可以对本书发表评论、提出技术问题,并获得作者及其他用户的帮助。访问论坛请前往:https://livebook.manning.com/#!/book/spring-start-here/discussion。你还可以在 https://livebook.manning.com/#!/discussion 了解更多关于 Manning 论坛及其行为规范的信息。

Manning 致力于为读者提供一个有意义的交流平台,方便读者之间以及读者与作者之间的互动。需要注意的是,作者在论坛中的参与完全是自愿且无偿的,因此我们无法保证作者会有特定的参与频率。我们建议你多向作者提出一些有挑战性的问题,以激发他的兴趣!只要本书仍在出版,论坛及以往讨论的存档都可以通过出版社网站访问。

评论