可能很多刚接触SpringBoot的朋友会有这样的疑问,如何学习SpringBoot,是不是应该先学SSM呢?今天就根据自己的经验和大家分享一下自己的看法,顺便也给大家推荐几本SpringBoot的学习资料。1.什么是SpringBoot?我们刚开始学习JavaWeb的时候,都是用Servlet/JSP来开发的。做一个有接口的Servlet,真是头大。后来我们可以通过隐藏域或者反射来减少Servlet的创建,但是还是不方便。后来我们引入了Struts2/SpringMVC等框架来简化我们的开发。与Servlet/JSP相比,引入框架后,生产力确实提高了很多,但是时间长了,又发现了新的问题。即配置繁琐且容易出错。新建一个项目,先搭建环境,再搭建环境。这是几行配置。不同的项目可能有不同的包,其他大部分配置都是一样的。Java总是被人诟病的配置代码量巨大繁琐,就是表现之一。那么该怎么办?SpringBoot应运而生。SpringBoot是Pivotal团队在2013年开发的一个基于Spring的新框架,它试图简化Spring中臃肿的配置,让Java开发更轻量、更快速。这个框架很活跃,官方也很关注。SpringBoot主要提供以下功能:为所有基于Spring的Java开发提供方便快捷的入门体验。它开箱即用。如果您有自己的自定义配置,则可以使用自己的。如果没有,可以使用官方提供的默认的。提供嵌入式服务器、安全管理、健康检测等一系列常用的非功能性功能,完全不生成代码,不需要XML配置。SpringBoot的出现让Java开发回归简单,因为它确实解决了开发中的痛点,所以这项技术得到了广泛的应用。从2017年初开始,面试基本都会问到SpringBoot。现在流行的SpringCloud微服务也是基于SpringBoot的,所以Java工程师掌握SpringBoot是很有必要的。从SpringBoot的诞生过程可以看出:SpringBoot并不是一个新的,而是基于已有的Spring框架,简化了Spring中繁琐的配置。SpringBoot降低了Spring家族的使用门槛,让新手更容易上手Spring框架。既然SpringBoot不是从零开始,那么SpringBoot是不是应该学会跳过SSM呢?听宋哥分析。2.你想跳过SSM吗?这是很多人问我的问题。我的建议是:“不要”。SpringBoot基于Spring,简单易用。很多人想当然地跳过SSM,直接上SpringBoot。但是我们在研究SpringBoot中的自动配置、条件注解、Java配置等东西的时候,却找不到太多新鲜的东西。java配置是Spring3提供的,条件注解也是Spring的东西。有很多很多,都存在于Spring中,但是这些东西在SpringBoot时代大放异彩。也就是说,即使你跳过SSM,直接去学习SpringBoot,其实你还是在学习Spring的东西。既然如此,我们不妨坐下来,老老实实地过一遍Spring。各个领域的开发工程师其实都会面临类似的问题。学习了一些优秀的封装框架,还有必要学习底层吗?当然有必要!因为底层的东西可以让你对你当前正在使用的东西有一个深刻的认识,也可以让你在出现问题的时候快速的解决问题。其实无论你想从事什么技术,都必须要有扎实的基础知识。这些扎实的基础知识就像肥沃的土壤,可以孕育各个技术方向的人才。一旦掌握了基础知识,就可以快速学习任何框架。今天跳过了SSM,直接学习了SpringBoot。如果有一天SpringBoot失败了,Pivotal团队基于Spring框架构建了一个新的框架,你要不要再学一遍?但是如果一开始就掌握了Spring的各种用法,不管是基于它的什么样的框架,都可以很快上手。再者,如果你学习Spring的AOP和Ioc/DI,你会发现很多框架都是类似的,核心思想都是这些东西,那么你学习Spring以外的框架就会容易很多。“如果对SSM不熟悉,可以在公众号后台回复spring、springmvc、mybatis,获取松哥5万多字的手打干货教程。”3.学什么,那么SpringBoot学习必须要学什么样的东西呢?这里我列一个进阶路线:最基础的当然是Spring/SpringMVC相关的东西。与各种页面模板配合使用,如Jsp/Thymeleaf/Freemarker/GroovyTemplates等与各种SQL数据库集成,以及一些常用的数据持久化框架,如JdbcTemplate、MyBatis、Jpa等与各种NoSQL数据库集成,如Redis、MongoDB、Elasticsearch等具有安全管理相关的知识点,如SpringSecurity、Shiro等缓存的使用,如JCache、Ehcache等与消息中间件集成,如ActiveMQ、RabbitMQ、Kafka等数据校验/定时任务/邮件发送等各种监控的使用。结合WebSocket的使用。SpringCloud中的相关组件。...以上只是我列出的一些比较常见的技术点。每个技术点还可以扩展到很多其他的东西。大家可以结合自己的情况,按顺序一一学习。还有相关的很多第三方框架,比如Redis、MongoDB、RabbitMQ等,SpringBoot的出现只是让这些组件更容易与Spring家族产品集成,并没有简化这些原有的用法成分。所以,还是要学习Redis、MongoDB、RabbitMQ等,还是少不了的。以Redis为例,学习了Redis,学习了如何将Redis与Spring集成,再回过头来看如何将Redis与SpringBoot集成,简直太容易了(《大家在后台回复redis的公众号》,有个宋大哥手把手敲的redis教程》)。当然,我们学习SpringBoot最终还是要走快速开发和微服务的道路,所以像Docker、SpringCloud这样的技术也是需要了解的。4、如何学习SpringBoot随着发展到今天,网上的资料和书籍越来越多。大家在看资料学习的同时,还要注意以下几点:多看源码。不像其他全新的框架源码,你可能会一头雾水。由于SpringBoot是基于Spring的,只要有扎实的Spring基础,可以说看SpringBoot源码毫无压力。如果你看了SpringBoot源码觉得有压力,那么你的Spring基础可能还不扎实。这个时候不妨放下SpringBoot,重温一下Spring。2、每当学习到SpringBoot中的一个知识点时,不妨想想在Spring框架中如何使用和配置这个功能。双方理解,相互印证,加深对一个知识点的理解。3、多关注SpringBoot的开发。与传统框架可能一年更新一两次不同,SpringBoot的更新非常频繁。每一次更新都会带来一些有趣的东西。可能会添加新的API,而旧的API可能会失效。变化较大,多加注意,避免掉坑。最后,我想列出几个我经常关注的资源。4.1官方文档说实话,SpringBoot的官方文档是我接触过的所有官方文档中最有条理和通俗易懂的。大家都在开发中,或多或少接触过一些第三方开放平台。很多平台的文档真是让人印象深刻。让人忍不住想吐槽,框架都做出来了,认真写一篇文档有那么难吗?不过SpringBoot的官方文档也算是非常非常的友好了。虽然是英文,但是对英文的要求其实并不高。即便是看书和猜测,其实也很容易理解它的意思。当我对SpringBoot的某个知识点有疑问时,我通常更喜欢官方文档。目前官方文档最新版本地址为:https://docs.spring.io/spring-boot/docs/2.2.4.RELEASE/reference/html当然,如果你觉得官方文档打开速度慢,宋哥也会帮你下载最新版的pdf,公众号后台回复springboot2.2.4即可获取。4.2Spring官方博客每次Spring或者SpringBoot发布新版本,宋哥都会去看看新版本有什么好玩的,增加了哪些内容。我不可能看完源码再总结它的变化。我一般如何获取权威的第一手资料?只需关注Spring官方博客即可。打开Spring官网,在顶部菜单中有一个选项是Blog,任何Spring家族产品的更新计划和更新结果都会在这里通知。宋哥也建议大家多多关注这篇博客。一方面可以及时获得第一手信息,另一方面可以提高英语水平,一举两得。宅在家里,泡一壶茶,细细品味这个网站,真的很不错。博客地址:https://spring.io/blog4.3中文资料说到中文资料,就不得不说松哥自己的在线教程和离线pdf文档。手把手教程274页,包括SpringBoot2的各种常用用法,即有离线pdf供大家下载,也有在线学习网站。诚意满满,没有下载过pdf的朋友不要错过。在线教程地址:http://springboot.javaboy.org离线pdf下载文档,在公众号后台回复springboot获取百度网盘地址。4.4学习案例除了这些文字的东西,一些线上的案例也很关键。这里我给大家推荐两个仓库。这两个仓库的案例都是基于SpringBoot2的。首先是我在公众号上的文章的配套案例:GitHub地址:https://github.com/lenve/javaboy-code-samplesGitee地址:https://gitee.com/lenve/javaboy-code-samplesin这个仓库大部分案例都是针对SpringBoot的,还有一个好处就是这些案例都有对应的讲解文章,每个案例对应一篇文章,是不是很美。另一个仓库是我整理的比较完整的,但是没有对应的讲解文章:GitHub地址:https://github.com/lenve/javaboy-video-samplesGitee地址:https://gitee.com/lenve/javaboy-video-samples5.总结材料贵而精,关键在于亲手学习。我上大学的时候,有些同学热衷于收集各种资料。电脑硬盘已经满了,但如果不学习,这些资料再多也没有用。
