杨开振《深入浅出Spring Boot 2.x》作者
当前互联网后端开发中Java EE占据了主导地位。对于Java EE开发,首选框架和事实标准是Spring框架。在传统的Spring开发中需要使用大量的XML配置才能使Spring框架运行起来,这备受许多开发者诟病。随着Spring 4.x的发布,Spring已经完全可以脱离XML,只使用注解就可以运行项目。近两三年里,互联网世界掀起了“微服务”热潮。“微服务”将一个大的系统拆分为多个子系统,然后通过REST风格的请求将它们集成起来,进一步简化了分布式系统的开发。
为了进一步简化Spring的开发,2014年Spring Boot诞生了,它是一个由Pivotal团队提供的全新框架,其设计目的是简化Spring应用的搭建以及开发过程,并迎合时下流行的微服务思维,越来越多的企业选择了Spring Boot。随着2017年9月Spring 5.x的推出,2018年Spring Boot也推出了2.x版本,进入2.x版本时代。
基于这样的趋势,杨开振老师在完成前两部著作后,收到许多的读者、前同事和业内朋友的建议,他们希望创作一本关于Spring Boot的书,来给需要学习Spring Boot的从业人员提供参考,这就是创作《深入浅出Spring Boot 2.x》的缘起。有幸采访到杨开振老师,下面来听听他的所思所想。
1.异步社区:尽管不少读者可能看过您之前出版的书,来异步社区做客还是第一次,请您与异步社区的读者打个招呼,简单介绍一下您自己?
杨开振:大家好,我叫杨开振,我2006年大学毕业,十多年来一直从事Java EE开发,现在改称Jakarta EE了,只是叫Java EE习惯了,我还是沿用Java EE吧。我主要是在做金融领域业务开发,也维护和开发过企业的ERP系统,还接触过移动互联网网站后端的开发等。我担任过技术经理和项目经理等要职,还主导过项目的开发。我接触Java EE是从需要自己搭建后台框架的开始,后来就开始接触框架技术,比如Struts(1和2)、iBATIS、Hibernate和EJB等老框架和技术,也玩过JavaScript、jQuery、EasyUI、 Extjs等前端技术,后来Sprng、Spring MVC和MyBatis兴起了,于是它们就成了我创作的方向。相信大家认识我也是从《深入浅出MyBatis技术原理与实战》和《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》这两本书开始的。
2.异步社区:很多作者都说写书苦,写书难,您写了好几本书,那您觉得您写作的动力是什么?写书带给您的最大收获是什么?
杨开振:我当前选择了从事自由职业,主要是创作技术书籍和做在线教育,所以写书就是我的职业,而实际上做任何一份职业要做好其实都挺难的,写书难,难道做企业开发就不难吗?既然选择了这条路,就要继续下去吧。最大的收获有两方面吧,一方面是写书可以有相对固定稿费收入,毕竟自由职业首先需要考虑的是生计问题;另外一方面是重新整理和收获知识,在创作的时候,我会回顾自己工作时用过的技术,研究它们的原理,看看有没有办法用得更好,不断的地研究和总结,这样往往会有意外的收获。
3.异步社区:您创作《深入浅出Spring Boot 2.x》这本书的初衷是什么?市面上已经有几本Spring Boot的书了,为什么您还会写这本书?这本书与其他书的最大区别是什么?
杨开振:因为我一直从事Java EE开发工作,是传统的Spring开发者,而最近几年Spring Boot引导的微服务异常火爆,渐渐成为Spring开发的主流,加上结合Spring Cloud可以快速搭建分布式系统,在我从事自由职业前,最后一个项目也是使用Spring Boot进行开发的,觉得它使用起来也十分简便,也喜欢这样的方式,所以我就打算创作一本属于我自己的Spring Boot的书。市面上确实有了其他Spring Boot的书,但是我觉得只要结合自己多年的实践经验,考虑企业所需,我还是可以做得更好的,所以我依旧选择了这个方向。我这本书的最大特点是结合Spring原理来介绍Spring Boot的知识,毕竟也很多使用者会抱怨使用Spring Boot后,出现异常后查找问题比较困难,但是只要你懂Spring原理,处理Spring Boot遇到的问题大部分都不会太困难,这本书很多时候是从这点出发进行考虑的。
4.异步社区:《深入浅出Spring Boot 2.x》这本书写作期间遇到了什么困难吗?听说这本书第一次交稿后没有马上出版,您又花了很长时间更新了一版,给大家讲一下这背后的故事?
杨开振:这本书的创作比创作接近700页的《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》还要困难。原因是Spring Boot的版本一直变化,从开始创作这本书的时候,开始版本是1.5.4,到第一次交稿是1.5.9,在快要定稿出版的时候,Spring Boot又正式更新到了2.0.0 GA版本,我和本书的责任编辑杨海玲老师商量后,决定将Spring Boot的版本更新到2.x以上的版本,毕竟这是未来的趋势,这就是为什么第一次交稿并未出版的原因了。创作这本书的第二个困难是可以参考的资料十分少,毕竟是Spring Boot版本刚更新,文章和资料少得可怜,所以只能自己去“踩坑”和研究源码了,所以花费的时间和精力都比创作前两本要大得多。
5.异步社区:2017年9月Spring 5.x的推出,2018年Spring Boot也推出了2.x版本,进入2.x版本时代。您觉得2.x的优势是什么?
杨开振:Spring 5.x的亮点推出了新的无阻塞框架WebFlux,并且融合了最近Java 8到Java 9引入的新技术,如Lambda表达式、模块化等的最新的思维,这些应该是未来Java的方向。Spring Boot 2.x是基于Spring 5.x的,所以首先继承了Spring 5.x的优点,其次是完善了Spring Boot 1.x的功能,所以它也是未来的方向。
6.异步社区:您最想将《深入浅出Spring Boot 2.x》这本书推荐给谁看?您觉得最能从本书中获得收益的是哪些人?
杨开振:要学习这本书需要先掌握Java和Java EE基础和数据库原理(SQL),如果需要使用Redis和MongoDB的话,也需要读者自行学习这两个NoSQL数据库。整体来说,本书适合Java互联网后端开发人员,从传统Spring 项目转向Spring Boot和Java微服务开发的开发人员都可以从中获得收益。
7.异步社区:对于《深入浅出Spring Boot 2.x》的读者,在如何学习和如何阅读本书方面,您有什么建议?
杨开振:我只能说因人而异。如果是初学者建议掌握好Spring的IoC和AOP、数据库编程、Spring MVC流程和常用的开发知识等基础内容,对他们来说而这些工作中使用最频繁的,也是在面试的时候被问得最多的。如果是已经洞悉了Spring的有经验的开发人员,那么就可以根据自己的需要学习了。又或者你在做项目,也可以根据自己感兴趣的内容来学习,毕竟并不是所有的技术都用得上。
8.异步社区:本书配套了大量的免费视频,您将这些视频免费的出发点是什么呢?
杨开振:免费视频的推出,主要是帮助新手,毕竟很多新手看书会卡在某个点上,而得不到解答,也许看了言传身教的视频课程后效果会更佳,毕竟有一个直观的感受,很多人也许会茅塞顿开。从我个人来说也可以帮助自己提高讲课的技巧,毕竟我自由职业的方向是技术书籍创作和在线教育。关于本书我也开了淘宝课程(http://i.xue.taobao.com/detail.htm?courseId=98159),采取技术入门课程一律免费,而深入企业级的才需要收费的形式来帮助大家,这样大学生和初学者就可以得到免费课程的帮助了,毕竟一些机构的培训费价格也是不菲,来我这里入门的课程就全部免费了。
9.异步社区:您目前成为自由职业人,全新投入在淘宝教育平台上开发Java EE互联网相关的在线培训课程,是什么促使您下这样的决心?培训和写书的感受有什么不同?哪个对您的影响更大?
杨开振:我看到了很多人投身在线教育行业,而写书也会给我带来一定的名气,这样是相辅相成的,也能帮助到更多的新人,我的一位前同事辞职去从事在线教育也很成功,所以更加坚定了我走这条路。培训在于角色转换,我目前只是尝试阶段,很多还不太适应,加上目前还不算成功,所以影响更大的应该是写书,能谈的培训方面的东西还比较少,所以就不展开讨论了,等将来做起来了,有更多的心得了再谈这个问题吧。
10.异步社区:经过这么多年的工作积累,您对计算机编程的感觉是否还如当年一样热衷?如何在繁重的工作压力下,保持初心呢?
杨开振:我对计算机编程还是很热衷的,主要是新技术。我目前研究分布式系统,主要是Spring Cloud微服务,也打算在这方面创作。其实工作繁重的时候真的没有时间去研究技术,只能在工作不繁重的时候研究新技术。保持初心也是因人而异吧,我是保持一种好奇心和职业所需,所以总想研究一些新的技术,也有些人是因为解决工作需要,所以每个人的方式会不一样,找到适合自己的就可以了。如果发现自己没有这个动力了,换个行业也是可行的,我的朋友也有不少是这样的,也挺成功的。
11.异步社区:对于刚刚入门的技术新人,您有哪些建议和经验可分享?
杨开振:对于入门的新手来说,我个人建议学好Java基础,Java EE技术这些是入门的基础,然后是学习Spring IoC和AOP、数据库编程等,关于Spring内容的均可以参考我的免费课程。从我QQ群里接触的新手来看,大部分新手存在4个问题是比较严重的。
第一个是眼高手低,很多读者告诉我两周或者一个月看完了我的《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》,我直接回复他,那么就等于没有看过,因为学习编程是实践的科学,没有实践过只是看过的一律归结为零,你不会知道这其中很多的细节和精妙之处。
第二个不能正确地对待错误,在遇到错误或者异常时,很多新手会过于沮丧,然后选择放弃或者依靠他人。在我的读者群里,经常有人不加思索地问问题,其实这些是错误的方式,当你发生错误或者异常的时候,首先要做的是看异常日志定位问题,其次是进行调试,通过监控变量来定位是哪一步走不通,而不是直接丢给所谓的某个高手,学会定位错误比正确的方法更为重要,因为正确的方法是“鱼”,而定位问题的过程是“渔”,要知道“授人鱼不如授人以渔”。而事实上,在我录制的视频课程中,也向大家展示了我的错误,我并不介怀这些事情,因为我也是凡人,也会犯错,作为老手的我都是如此何况是新手呢?别看我现在代码犯错少了,那是因为以前我犯的错误比你多多了,有了经验而已。所以,面对错误是每一个学习编程人员的必经步骤,没有什么值得恐惧的。
第三个是思而不学。什么意思呢?就是自己没有认真学习就根据自己的想法来,而自己的想法却是错误的。如果你是初学者,我个人建议先按别人成功的案例来,而非自己想象,做好了别人的成功案例,就可以建立信心,学习效率就高了,然后再弄明白原理,才能自己去发散自己的思维,毕竟思而不学则殆。
第四个是看不懂而不做。我写的书钟的案例都是可以运行的,你看不懂的时候,先“抄袭”,然后自己运行起来,或者直接调试我给的源码也可以运行起来。运行起来后你就有信心了,然后在探索究竟,而不是什么都不做在哪里傻傻地看不懂,这样也是没有进步的。
作者:杨开振
Spring框架是Java EE开发的事实标准,而Spring Boot是业界最流行的微服务开发框架。
本书从一个最简单的工程开始讲解Spring Boot企业级开发,其内容包含全注解下的Spring IoC和AOP、数据库编程、数据库事务、NoSQL技术、Spring MVC、Spring 5新一代响应式框架WebFlux、REST风格和Spring Cloud分布式开发等。