用Spring从零开发一个“二进制奶茶店”
本书设计了一个贯穿主要章节的实战案例,在带领大家一步步从零开始实现一个“二进制奶茶店”的过程中学习如何灵活运用全书内容。从知识角度看,本书四大部分由浅入深,第一部分从Spring的基础概念 IoC、AOP入手,过渡到当下 流行的Spring Boot;紧接着第二部分介绍了Spring的数据持久化操作;从第三部分开始学习如何用Spring开发web应用;最后第四部分讲述了如何用Spring开发微服务。从过程管理角度上看,本书每个章节都以“需求描述”开头,以“二进制奶茶店项目开发进度”发展,以“二进制奶茶店项目开发小结”结尾,非常贴近实际工作场景。
本书重实战、重工程现实,是业内专家丁雪丰还是一个萌新的时候亲历的高效学习路径,一个有Java基础的程序员读了本书之后可以快速上手Spring,但本书不太适合具备多年的实战经验的老手。
与Spring搭配使用的其他框架的技术选型
Java语言的logo是一杯热气腾腾的咖啡,因为外国人有咖啡续命的传统,而中国人则贡献了世界上大多数珍珠奶茶的小肥脸。从更符合中国人的饮食习惯的封面上就看得出,与外文原版书相比本书的特色之一就是尽可能贴合国内程序员的工程场景,在技术选型角度上尤甚。比如在《16.1 使用Dubbo进行RPC通信》中着重介绍了国内较流行的Dobuu而不是世界上更流行的Netty。
问:书中着重介绍了国内较流行的Dobuu和fastjson而不是世界上更流行的Netty和Gson,是不是考虑到更贴合中国人的需求? 答:与外版书相比,本书的特色之一就是尽可能贴合国内程序员的工程场景。 |
此外本书在关系型数据库的选型上对比分析了国外较流行的是全自动的Hibernate与国内更加青睐的以灵活性见长的半自动的MyBatis的取舍,做到了殊途同归:MyBatis的功能丰富,在插件的帮助下也能做到Hibernate的开发效率;而在专职DBA的协助下,使用Hibernate的Java工程师也能完成更复杂的丰富功能。
问:在关系型数据库的调用上,国外较流行的是全自动的Hibernate,而国内则倾向于更灵活的半自动的MyBatis,功能齐全和开发效率应该怎么取舍? 答:其实两者到最后都是殊途同归的,MyBatis的开发效率和功能在工具的辅助下也能做到与Hibernate差不多。在功能复杂度上去之后,Hibernate无论是否写HQL也会变得很复杂。再加上大公司都有DBA,会对执行的SQL有要求,各种调优,因此平衡之下,两者在效率和功能上差不多。 |
为读者指出研究方向的茶歇时间
除了正文以外,每个章节中还穿插了类似彩蛋一样的“茶歇时间”栏目,就是对项目的短期结果没有明显提升,却对开发者长期成长有巨大帮助的内容,比如讲解RestTemplate的使用方式的《9.4 访问Web资源》的茶歇时间就介绍了RestTemplate的经典设计模式——模板方法模式;讲解RabbitMQ和Kafka的使用方式的《16.2 使用消息中间件进行异步通信》的茶歇时间也介绍了常见的消息模型。读者可以根据茶歇时间提到的关键词查阅其他资料来扩展自己的知识面广度、挖掘自己的专业深度。
问:是否会增加设计模式相关的内容? 答:如果还有下一版,应该也不会有详细去讲解设计模式,GoF23要展开也有不少东西要说,这不是本书的重点。可能还是会选择与这次一样的方式,在茶歇时间中介绍某几个用到的设计模式。 |
关于GoF设计模式,我个人认为最好的书是iTuring出版的结城浩的《图解设计模式》,关于如何用Java实现消息模型的书则是iTuring出版的结城浩的《图解Java多线程设计模式》
瑕不掩瑜之处
因为术业有专攻,一本书不可能覆盖开发的各个角落。尽管兔子书全面介绍了利用Spring开发网站后台的流程,足以将一个新手程序员指导成一个资深的 Spring开发者,但程序员成长过程中需要学习的某些内容兔子书并没有覆盖到:
问:Java有个很重要的框架——RxJava3,兔子书中只字未提,线程池也在茶歇时间一笔带过,兔子书的下一个版本是不是要写怎么用Kotlin使用Spring ? 答:响应式编程在书中介绍了Reactor和WebFlux,因为这是与Spring相关的,RxJava暂与本书的内容关联度不高,因此并未涉及。如果有下一版,应该不会介绍Kotlin和Groovy来编写应用程序,还是会以Java为主。 |
兔子书只在《11.4 响应式Web》中介绍了Reactor和WebFlux,紧接着就在茶歇时间中提出了响应式编程框架WebFlux短时间内不可能替代命令式编程框架SpringMVC成为与Spring配合最紧密的框架的观点,理由是优势并不明显并且理解难度过高。对于著名框架RxJava(无论是RxJava2还是RxJava3)也是只字未提,这对于想要学习响应式编程的读者来说是一个短板。
另外作者专注于Java多年,兔子书所有代码均为Java实现,如果读者是习惯使用Kotlin编程的程序员,兔子书读起来也会比较吃力。