Spring把自己定义为技术革命,这场思想革命波及Web开发的全栈,从数据库到中间件(缓存,消息)再到前端页面显示。技术是日新月异的,Spring MVC仍是最主流最成熟的Java服务器端 MVC 框架,但它并不代表Web进化的方向。

就目前来看,Spring MVC 仍是一门实用的技术。关于 Spring MVC 技术的招聘信息,打开 Boss 直聘、智联招聘等网站,搜索 Java 相关的岗位,大部分招聘信息的任职要求如下所示:

熟练掌握Spring MVC,MyBatis,Spring Boot等开源框架。

上面招聘信息表明,如果去应聘 Java 开发工程师的岗位,无论是初级开发师,还是有一定经验的中高级开发师,多多少少需要掌握 Spring MVC 框架技术。由此看来,我们不能仅仅掌握 Spring MVC 的基本用法就可以了,更需要深入了解它,以便更好地适应企业的开发需求,同时提升自我价值。

Spring MVC 的重要性

作为当前流行的 MVC 框架,Spring MVC 框架的优点就不再赘述了,同时它是 Spring 框架体系的一个分支产品,以 Spring IoC 为基础,并利用容器的特性来简化其配置。Spring 是 Java 开发领域非常重要的框架。

现在 Spring Boot 很流行,Spring MVC 还有必要学吗?相信这也是很多朋友们的疑问,那我们就来谈谈为什么要学 Spring MVC 吧。

什么是 Spring Boot

首先,Spring Boot 是现在比较流行的框架,可以实现快速开发,包括我自己也在用它开发项目。其优点是简化了 Spring 相关组件的配置,实现自动配置,降低了项目搭建的复杂度,使开发变得更加简便,从而提升开发效率。Spring Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。

Spring Boot 并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。同时它集成了大量常用的第三方库配置,如 Jackson、JDBC、Mongo、Redis、Mail 等,Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的 Spring Boot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。

也就是说,Spring Boot 只是起到一个承载的作用,辅助你简化项目搭建的过程。如果承载的是 Web 项目,使用 Spring MVC 作为 MVC 框架,那么整个业务工作流程还是由 Spring MVC 来完成的,因此 Spring Boot 并不能替代 Spring MVC,它只是简化了 Spring MVC 的相关配置,Spring Boot 帮你完成了很多底层工作。

用 Spring Boot 还是 Spring MVC?

这里你可以能会有这样的疑问,既然使用 Spring Boot 可以简化 Spring MVC 的配置,开发起来更加快捷方便,那就用它就好了,为什么要学 Spring MVC ,放着简单的东西不用,非要去用复杂的东西呢?

这个问题需要因人而异,如果你是一个开发经验丰富、对 Spring 框架体系产品原理都非常了解的老司机,那不用说,肯定推荐你使用 Spring Boot。但是如果你是一个经验尚浅,对 Spring 框架体系不是很了解的开发者,过于简化的东西对你来说不见得是一件好事,简单的背后其实是隐藏了其中的学习曲线,在不需要了解 Spring MVC 原理的情况下就使用其进行开发,这叫知其然而不知其所以然,不是正确的学习方式。

Spring Boot 的优点是框架帮你屏蔽了很多底层操作,可以完成快速开发,但任何事情都有两面性,它屏蔽了底层操作的同时也屏蔽掉了你对于底层原理的理解和学习,假如只会简单的使用框架,一旦遇到较为复杂的问题,一定是一脸懵逼。

若不懂原理,是无法解决问题的,你只知道 Spring Boot 自动完成了一些操作,但是对于它究竟完成了哪些操作浑然不知,想想看,这样的方式真的有利于自我提高吗?除非你想一辈子搬砖,不考虑做一些底层架构或者更深层次的工作。

就好比一个赛车爱好者,如果仅仅是驾驶技术好,那永远只能是个票友;如果想成为真正的高手,一定是需要自己对赛车进行不断地调试改装,直至性能达到车子的极限。那如果连汽车的结构都不了解,只会开车,又怎么能完成车辆的性能优化和改装呢,因此,不但要驾驶技术一流,还要懂得赛车的内部原理,才能成为真正的老司机。

写代码也是一样,如果仅仅停留在使用快速开发框架完成项目,而不去钻研探究底层原理的话,永远也不会有质地提高,只会调方法堆逻辑。在没有夯实底层体系的情况下,一味追求敏捷高效,欲速则不达。