探索技术,追求本源,我是倾城之夏。
本期我们一起来探讨一下在项目里面的一个技术选型。
Spring Boot VS Spring MVC
对于一些新手来讲,可能你们在做项目的时候会面临一个问题,到底是使用 Spring Boot 还是使用 Spring MVC 呢?因为这两个都是属于 Spring。
我们可以先来看一下对于 Spring MVC 来讲,它其实是一个框架,它是在 Spring 里面的,它是其中的一个子集,或者我们也可以称它是一个 Spring 的 Web 模块。
对于 Spring Boot 来讲,很多人都称 Spring Boot 它是一个框架。我们从严格意义上来讲的话,它是一个配置工具、整合工具,它里面包含了很多的东西,就像是魔术口袋那样,你想要什么东西都可以从里面去拿。我们是通过 pom 去进行依赖的,它主要实现了自动配置。我们在使用 Spring MVC 的时候,在 Spring MVC 里面会有很多的配置项,绝大多数我们都是通过 XML 去进行配置的。使用 Spring Boot 以后,我们会强调一个叫做零配置,我们是没有 XML 这样的配置的,我们会把所有的配置精简到 yml 或者是 properties 这个文件里面,目的是零配置。
对于 Spring MVC 来讲,一旦我们的项目经过周期很长以后,一直在迭代,其实我们的项目会越来越复杂,我们的配置也会越来越多。我们的配置项很多的话,对于新人来讲或者是新入职的人员来讲,看项目代码的是会眼花缭乱,你可能会无从下手如何去做一个模块。 当我们去使用了 Spring Boot 以后,Spring Boot 可以适当的提高开发效率和生产率,Spring Boot 本身就是开箱即用的、非常的方便。数据源、Redis、MQ 等中间件,我们都是可以通过 stater 来进行依赖和引入的,集成起来也是非常的方便,使得我们开发人员开箱即用。这个 stater 我们就可以俗称为是懒癌程序员的拯救者,非常的方便,一定程度上简化了 maven 的配置。 此外在我们使用 Spring Boot 的时候,我们的 Tomcat 本身也是集成到了 Spring Boot 里面去,我们直接可以使用内置 Tomcat 就可以去进行启动项目了。
通过配置文件,可以在里面去配置一些 Tomcat 里面的一些端口号啊、一些配置项等等,都是可以去做的。如果我们使用 Spring MVC,我们的t Tomcat 无疑是需要去额外下载,所以是需要去依赖外置的 Tomcat 才可以去运行我们的项目的,这一点我们是需要去进行区别的。
为什么不选 Struts
Struts 是一个 MVC 框架,对于一些老手程序员来讲的话,肯定会知道 Struts。对于新手程序员来讲的话,可能你并不了解,因为 Struts 在十年前是非常火、非常流行的,几乎所有的一些项目采用的 MVC 框架都会使用 Struts,Struts 有 Struts 1 和 Struts 2,到现在为止几乎没有人在用了,因为它本身安全性就不太好。但是对于一些非常老的项目,像一些金融类的保险项目的话,可能还是会继续使用 Struts。
-
安全漏洞:Struts 它本身有一些安全漏洞,在之前发现了安全漏洞以后,官方又一次对 Struts 进行了维护,进行了版本的提交。因为 Struts 的漏洞,会导致我们项目一部分代码被恶意的篡改,或者是黑客上传的一些可执行的一些代码,是非常非常危险的。对于我们技术选型来讲的话,安全性是必须要考虑的一个问题。
-
请求变量共享:我们使用 Struts 搭建项目,一旦我们的用户量增多,请求变多的话,对于我们请求的 action 去处理的时候,相应的一些变量它有可能会出现共享的情况。这个问题是由于它的 action 线程安全的一个问题所造成的,所以这一点是需要去注意的,当然也可以通过一些手段去进行处理。所以就目前而言,新项目是不会再去使用 Struts。
-
Filter 拦截:Struts 它的一个入口类,就像我们在使用 Spring 的时候,Spring、Spring MVC 和 Spring Boot,它们本身一个拦截机制是使用 AOP,是基于切面的一个拦截,是通过方法去拦截的。Struts 是通过 Filter 拦截,Filter 其实是过滤器,过滤去的话它是类拦截,它们的两种是不一样的。
-
非 Spring 官方自产自销:Struts 和 Spring 可以去整合的,但是 Struts 本身它并不是 Spring 官方的,同时它也不是自产自销,所以当我们使用 Struts 和 Spring 去进行整合的话,可能会略显有一点重。当然如果我们使用 Spring MVC、Spring Boot,本身两者都是Spring 官方的侵扰者,整合起来是非常轻松的,毕竟是自家的产品。
前端技术选型
接下我们再来探讨项目的一个前端技术选型。我们虽然是做后端开发的,但是对于前端我们也是要做一些了解,虽然我们不要去接触,不要去编写额外多的前端代码。但是如果你想要职位上有更好的发展的话,作为架构师或者以后作为技术总监,对于前端技术你一定要有一定的了解。
-
MVVM:首先来看一下前端使用的开发模式是 MVVM,它是在前端领域里面的一种现有非常流行的开发模式,不管是使用 Vue 还是 React,甚至是小程序,开发模式其实都是 MVVM。都是通过数据的双向绑定去渲染我们的一些页面的,是不会再去像以前那样去根据我们的 DOM 去操作我们的节点,两种模式是不一样的。
-
对于我们的框架来讲,JS 部分我们主要是使用的是JQuery 以及是 Vue。因为我们使用的一个前端模板里面有一部分的组件是使用 JQuery,所以 JQuery 框架是涉及到,也会去使用的。另外我们也会使用 Vue,为什么会使用 Vue 呢?因为 Vue 本身是一个渐进式框架。当我们的一个项目里面使用 JQuery 或者 Angular,或者是其他的一些前端框架的时候,由于 Vue 它是渐进式的,所以可以逐步地把 Vue 里面一部分的特性、一部分的组件、一部分的脚本代码拿过来去使用,所以它是一种渐进式的开发模式,是非常方便的。在我们渐进式的过程中,我们是可以逐步去替换掉原来的东西。举个例子,现在我们有一个大型的前端项目,可能已经是做了有五六年,它以前的代码都是使用 jQuery,当我们使用 Vue 以后,那么我们是可以逐步经过我们的周期性迭代,逐渐地把 JQuery 给剔除掉,所以这就是一种渐进式的框架,它其实是非常好的。所以说在我们的一个前端项目里面,Vue 和 JQuery 就是我们前端项目里面使用的最多的两个框架了。
-
我们的页面和样式,主要就是 HTMl 和 CSS,是比较基本。对于我们不管是 Java 开发人员,还是一个架构师,基本的一些 HTML ,基本的一些 CSS 样式,你都应该要去写。如果你能够作为是一个全栈开发人员,全栈架构师那就更好了。
技术选型要考问题
我们再来探讨一下,当我们要去做技术选型的时候,我们所要去考虑的、所要去抉择的一些方方面面是哪些。
-
切合业务:那么我们能否实现现有的功能,能否预估到后续的功能和现有技术的一个贴合度能否完全的匹配?这些都是应该要作为一个架构师所能够考虑和预估到的,必须要切合我们的业务。如果这个技术现在可以完全的配合,但是在后续所预估到的一些功能模块,一些业务可能无法满足的时候,这个时候我们就需要去仔细的去斟酌了。
-
社区活跃度:有一个技术出来的时候,不管是在国外还是在国内,它都会有相应的社区,如果它的活跃度非常高的话,就代表使用率也是比较高的。相应的它所体现出来的一些问题、优点以及缺点都会存在的,像这样的一种技术,我们是可以考虑去使用的。如果社区活跃度是非常低下,对于这样的一种技术就代表可能并没有多少人去关注它。
-
团队技术水平,在我们进行一个技术选择的时候,如果我们团队经验的不足的话,那么我们是需要去对他们进行培训的,或者我们在开发周期短以及结合综合因素的时候,我们是需要去斟酌,我们到底要不要去使用一些团队比较熟悉的技术,还是我们团队比较陌生的技术,作为领导者是需要去考虑。如果使用一个技术比较新,或者整体团队可能都没有去接触过,也是要去适当的对大家去进行培训,提高整体的技术水平、业务水平,这些都是要去跟着提升的。
-
版本更新迭代周期:如果一个开源的技术本身它迭代是非常快,它的一个周期叠加起来也是比较短的话,对于这种技术,我们也是可以考虑去选择的。举个例子,我们比较熟悉的 Dubbo 框架,在之前版本停更了一段时间,有一部分公司在使用 Dubbo 的时候,只出现过一些相应的问题,但是得不到解决。所以当一个开源技术停止更新以后,你一定要去斟酌后续要不要去使用它。虽然 Dubbo 在现如今已经是恢复更新,毕竟在中间有一段时间的停止更新,对很多公司的业务肯定是造成一些相应的影响。
-
试错精神:那么什么叫试错精神呢?在这里并不是说在我们的实际项目开发中去试错,这个主要还是要我们在平时接触各类技术的时候,我们要去多试、多体验,不论是对是错,对于我们来讲都是一种经验,我们要去善于总结,多去试验、多去验证。这样子我们就可以有很多的一些备选方案、备选的技术了。
-
安全性:之前我们在 探讨 Struts 的时候,最大的一个问题就是一个安全漏洞。如果某些技术一旦有了安全性,或者说曾经出现过安全漏洞的话,你就一定要去仔细的斟酌,你要不要去使用它了。
-
成功案例:我们在使用某些开源技术、某些框架的时候,多多少少在我们的行业内,如果口碑都不错的,有成功案例的,大家如果都去推荐的话,我们都是可以去使用的。不管是小公司还是知名公司都在用,我们都是可以采纳去使用。
-
开源精神:现在我们在做开发的时候,我们所使用到的技术都是一些开源技术,在某些情况下,我们使用到的技术有可能会闭源。当我们在去做技术选型的时候,我们也应该要考虑到,如果这个技术在未来它有可能会闭源的时候,我们就需要去仔细斟酌了。在前期,一般我们都不会知道它有没有可能会被闭源,但是如果一旦我们在某个时期听到有这样的风声了,那么就要仔细的去斟酌了。
点关注,防走丢
文章持续更新,可以微信搜一搜 it后台之路,可以获取更多 面试资源学习视频等,感兴趣的小伙伴欢迎关注
如果你觉得本篇文章对你有点用的话,感谢你为本文章点个赞,非常感谢!!