拥抱SpringBoot/Cloud:从SpringMVC到Spring Boot

本文欢迎转载,转载前请联系作者,经允许后方可转载。转载后请注明出处,谢谢! http://blog.csdn.net/colton_null 作者:喝酒不骑马 Colton_Null from CSDN

所以说,就好比买车。SpringMVC就是传统的手动挡的车,开车时需要手动挂挡。而SpringBoot就是手自一体的车,默认是自动挡,想要的手动挡也可以。

引言

最近由于公司业务需要,再加上需要今年要搭建我们的微服务系统,所有最终我们决定拥抱Spring Boot + Spring Cloud生态。本系列Blog也是用于记录这一路的学习历程。

其实早在2016年刚实习的时候,做的第一个项目用的就是Spring Boot框架。当时也不懂什么Spring,什么是MVC。后来发现,网上大量的资料中,存在Spring、SpringMVC、SpringBoot等各种名词。一个Spring框架,包涵了那么多东西,看得是眼花缭乱头皮发麻。

后来大概明白了,我使用的这个SpringBoot框架是属于在SpringMVC之后,在这之前有SpringMVC,Struts之类的框架。但一直以来,我都想搞清楚SpringBoot和SpringMVC到底有什么区别。可因为技术功底不够,经验为零的缘故,始终没有太搞明白。只是知道SpringBoot比SpringMVC简单了一些,简化了一些开发中繁琐的步骤,不需要大量配置等。而这也是从网上看其他材料笼统的说法。具体简单在哪里也不清楚。

去年开始,逐渐接触了SpringMVC,以及JFinal。后来下半年的开发主要是在SpringBoot和MVC之间(不同的项目用的不一样)。使用SpringMVC的时候就发现,原来SpringMVC需要配置那么多的xml文件,而SpringBoot不用。还有一点就是,SpringBoot的一些配置主要是用配置文件和Java配置两种方式。

随着时间的推移,学的看的越来越多,直到年初的时候,决定今年要全面拥抱Spring Boot和Spring Cloud之后,又仔细的学习了SpringBoot,才算是基本搞清楚SpringBoot和MVC到底差在哪里。

几话说明白SpringBoot和SpringMVC区别

1.SpringBoot不是什么新技术,本质和SpringMVC是一样的。
2.SpringBoot是用来简化SpringMVC开发过程。简而言之就是,以前在MVC中需要在xml配置大量的bean等,在SpringBoot中通通不需要了。
3.不需要了不代表没有。SpringBoot根据开发人员所引的第三方插件框架,自动完成了默认的配置。所以SpringBoot提出的“约定优于配置”的含义也在此。说白了就是在SpringMVC开发中,有些配置在大多数项目中都是按照默认配置去编写,比如DispatcherServlet,InternalResourceViewResolver等,那么SpringBoot就帮开发者默认配置好。
4.当然了,如果想要自定义的话也提供自定义配置的方法。
5.SpringBoot内置Web容器(Tomcat),可以快速部署调试项目。就是,怎么快怎么来。同时,也支持用自己的web容器执行。(打成war包,上线的时候放在自己的外部web容器中,方便管理)。
6.所以说,就好比买车。SpringMVC就是传统的手动挡的车,开车时需要手动挂挡。而SpringBoot就是手自一体的车,默认是自动挡,想要的手动挡也可以。

Spring从1.x到4.x

1.x时代:Spring所有的配置都要通过xml来完成。弊端很明显,随着项目的扩大,这些xml文件就像噩梦一样很难维护。
2.x时代:随着JDK1.5的面世,Spring提供了用注解的方式(@Controller,@Service等)来配置,大大减少了xml配置量。
3.x到现在:从3.x开始,到现在的4.x和SpringBoot,官方推荐使用Java的配置方式来配置工程。如下图。这种方式更便于程序员理解配置本身,也极大方便了代码的维护和调试(可以打断点!!!)。
拥抱SpringBoot/Cloud:从SpringMVC到Spring Boot

SpringBoot是如何实现自动配置的?

这就说来话长了。未来有时间会根据源码,详细的介绍SpringBoot是如何完成的。这里简单的说就是,在SpringBoot的框架中,Spring已经将默认配置的内容写好了。Spring对主流的框架都提供默认配置的支持,当开发人员引入第三方框架的时候,Spring会自动检测到这些框架,然后执行默认配置的代码,帮助开发人员完成默认的配置。

所以说,SpringMVC能做的,SpringBoot都可以做。而且SpringBoot采用“约定优于配置”的思想,可以快速搭建项目,让开发人员的精力更多的专注于业务本身,不是繁琐的配置。