为什么要写这本书
经过几年的发展,Spring Boot几乎已成为Java企业级开发的标准框架,它为开发人员提供了极其方便的项目框架搭建、软件集成功能,极大地提升了开发人员的工作效率,减少了企业的运营成本。而Spring Boot又极其简单易用,一个新手按照官方文档的指导在十几分钟内就能创建一个可运行的Spring Boot项目。
Spring Boot的研发团队实现了用软件改变世界的梦想,实现了另外一种形式的创新。有句话说得非常好:“世界上90%的行业都值得重做一遍,当你把它们做到极致时,那便是创新。”Spring Boot做到了这一点,也得到了市场和用户的认可。
Spring Boot为开发人员提供了方便,但一些开发人员并不了解Spring Boot为什么可以带来方便的底层逻辑,也没有尝试借鉴Spring Boot的这种创新。这不仅会导致他们在使用Spring Boot的过程中不能深层次发挥它的优势,还会导致在大范围应用Spring Boot之后出现各种问题却找不到解决办法的情况,更别说借鉴Spring Boot的创新了。
作为软件开发人员,我们都知道设计模式很重要。为什么重要呢?因为这些设计模式是解决编程过程中一些典型问题的标准方法,已经被验证和认可。学习了这些解决方案,在遇到类似的问题时,软件开发人员便不用“重复造轮子”,直接借鉴经验即可。
当然,如果在使用Spring Boot的过程中只是简单地“用”,而不去思考其背后的实现逻辑与思想,即便用得再好,收获也是有限的——这样只能做到“手熟”,并不能拥有“匠心”。更重要的是,如果不学习Spring Boot背后那些优秀的设计理念和实现方式,我们肯定不能真正用好Spring Boot。
学习Spring Boot的设计理念和实现方式除了能够让开发人员从“手熟”的境界跨入“匠心”的境界,还能够让开发人员在其他业务场景中触类旁通地找到更加优秀的解决方案。同时,开发人员也能够了解代码和项目背后的深层逻辑,这会为以后的工作带来诸多好处。
因此,我在使用Spring Boot的过程中并未停留在“用”的层面,而是不断地研究、总结其源代码,发掘背后的优秀设计理念及实现方式。现在,我通过这本书将研究的一些方法和成果分享给大家。
技术在不断地快速迭代,但核心逻辑是永远不会变的,希望读者在阅读本书的同时,也关注分析源代码的方法和思路。“授之以鱼,不如授之以渔”,如果读者能够通过阅读本书,理解了Spring Boot背后的设计理念和实现方式,甚至寻找到更加优秀的解决方案,那将是我最大的欣慰。
读者对象
·Spring Boot的使用者和爱好者。
·Spring系列框架的使用者和爱好者。
·对源码感兴趣,希望学习源码解析相关方法的技术人员。
·开设Spring Boot相关课程的院校师生。
本书特色
本书有别于市面上其他Spring Boot入门和实战类的相关书,更多侧重于Spring Boot设计思想、原理及具体功能实现的源代码分析,从一个更深的层次带领读者了解Spring Boot。书中内容涵盖范围较广,却又不显冗余,每一个知识点都通过典型的功能实现来进行分析。
本书内容基于Spring Boot 2.2.1,书中涵盖的许多知识点都是我多年经验的总结,希望能给读者带来全新的知识盛宴。
如何阅读本书
由于本书的重点在于对Spring Boot源代码的分析及底层逻辑实现的讲解,因此对读者的水平有一定的要求。
首先,读者要对Spring Boot有一定的实战经验,要会用一些具体的功能,这样,配合本书的讲解才能够达到更好的学习效果。
其次,读者需要有一定的Spring使用经验。Spring Boot基于Spring框架,使用了大量Spring相关的功能及特性,由于本书重点讲解Spring Boot的实现原理,对Spring功能及特性无法大量拓展,因此需要读者有一定的Spring相关基础,这样才能更好地理解本书内容。
本书从大的方面可分为四部分,对于这四部分的阅读建议如下。
第一部分为准备篇(第1章),这是阅读本书需要做的准备工作,包括源码的获取与调试、源码阅读工具的准备等,并带领读者从整体上了解源码目录结构和Spring Boot设计思想。建议大家都看一看。
第二部分为原理篇(第2~4章),着重讲解Spring Boot的实现原理及基本流程,这是Spring Boot的核心内容之一,也是读者学习后面章节的基础,建议读者系统学习。
第三部分为内置组件篇(第5~12章),着重讲解Spring Boot内置集成框架的实现原理及源代码分析,读者在学习了第二部分内容之后,在这里可根据需要进行独立章节的学习。
第四部分为外置组件篇(第13~16章),着重讲解项目实施过程中单元测试、打包部署、监控等相关外置辅助工具的集成及源码解析,对这部分读者可根据需要进行独立章节的学习。
本书提供了源代码阅读准备章节和实战内容。读者可根据需要选择性阅读。
勘误和支持
由于本书是基于Spring Boot 2.2.1撰写,大多数内容较新,可用于参考及校对的资料较少,同时在写作过程中Spring Boot官方又进行过几次版本升级,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。
为此,我创建了一个在线支持与应急方案的二级站点( https://github.com/secbr/springboot-book )。你可以将阅读本书时发现的错误发布在Bug勘误表页面中。如果你在学习中遇到了问题,也可以访问Q&A页面,我将尽量在线上为你解答。书中的全部源文件也可以从这个网站下载,我也会及时更新相应的功能。如果你有更多宝贵意见,也欢迎发送邮件至邮箱 214399230@qq.com ,期待得到你们的真挚反馈。
致谢
首先要感谢那些在写书过程中给予我最大支持和鼓励的朋友,也要感谢那些默默在互联网上分享知识的朋友(我也是其中一员)。正是这些乐于分享知识的人才造就了互联网的繁荣,也正是这些默默无闻的分享者,带给我灵感,他们就像本书的一面镜子,更清晰地反映出我在写作过程中出现的问题。
因为之前参与Bob老师一本书的撰写,我有幸结识了杨福川老师和孙海亮编辑,才促成了这本书的合作与出版。
感谢机械工业出版社华章公司的孙海亮编辑和杨福川老师始终支持我的写作,在他们的鼓励、帮助和引导下,我顺利完成了本书的创作。
谨以此书献给我的父母和朋友们,以及我的读者、众多技术分享者、知识布道者!