在我们实际动手搭建一个spring boot项目并开始技术小册毕设项目的基础架构的开发之前,很有必要带学习过或者了解SSM框架以及正在入门Spring Boot的朋友来认识下学习和使用Spring Boot的必要性。
传统SSM项目的弊端
-
配置繁杂
经历过传统的SSM项目开发的小伙伴,都有这样的体验,花太多的精力在框架整合的配置上,需要关心被整合进Spring应用的第三方框架的配置细节,还需要关心不同环境下比如本地开发、uat以及生产环境下如何按环境区分配置,稍有疏漏项目上线就有风险。就拿最基本的Spring MVC模块的整合来说,我们需要配置应用上下文(DispatcherServlet所使用的web应用上下文、以及spring父容器所使用的根路径上下文),另外还需要在web部署描述符如web.xml中初始化一些基础且通用的web组件,当我们每创建一个web应用时都要这么做,这种重复的劳动会让我们沦为复制、粘贴的机器。
-
基础模块配置形式被焊死了
作为项目的基础架构开发人员,我们在设计和实现一个Spring项目的基础架构时,通常我们会考虑一些基础模块可以被各个使用该基础架构的子系统来扩展、重写并实现开发者的自定义配置形式,甚至禁用一些基础模块,这对于传统的Spring应用来说,都面临着巨大的挑战。
-
项目打包部署太麻烦
在使用Spring Boot前传统的web应用的部署方式,都是我们自己通过一些构建工具比如最早的ant(需要我们对要编译的源码目录、要打包的项目资源进行明确的路径指定、要写各种繁琐的任务,并手动指定顺序来执行一个WAR包的构建),后来随着Maven构建工具的出现和广泛使用,Web应用的项目结构得到了统一,项目打包的配置方式也因“约定优于配置”而大大的简化了。但是我们依然需要对要部署的web容器使用什么样的部署包的细节有所了解,比如WAR和EAR的结构,针对不同的包部署类型进行不同的配置。
因为打包出来的war包是要部署到外部的web服务器上的,因此需要我们额外的关注服务器的域名、端口、服务器的处理线程设置是与web容器绑定的数据源,这些配置要素都与特定的部署服务挂钩的,都需要在部署一个web应用时进行配置。
-
应用的监控和管理问题
为了对部署的web服务进行优化,我们不得不手动处理各种类加载策略、自己搭建实现应用的监控、对一个web应用中部署的多个应用进行管理、自行维护应用运行的日志输出等等。
Spring Boot的颠覆性
在Spring Boot出现后,这些问题都不是事,分分钟我们就可以搞定一个可以使用不同持久层框架的curd web应用。可以说Spring Boot完全颠覆了传统的Spring web应用的开发方式。提高了企业级Java EE应用的产出效率。我们要做的其实很简单,只要使用一个项目构建工具比如Gradle或者Maven,配置Spring Boot插件和依赖管理插件,针对我们要开发的模块和使用的框架,引入相应模块的起始依赖(Starter),然后把主要精力放在业务逻辑的开发上。应用层和项目的部署配置在一个配置文件中自行覆盖下默认的配置,通过一个主类的main方法,我们就可以像运行一个普通的Java应用程序那样启动咱们的Java Web后台服务了。至于应用的健康检查和监控以及故障的分析,Spring Boot都提供了相关的模块,我们只需要在配置时通过暴露端点服务就可以通过http请求来查看应用状态。Spring Boot通过autoconfigure实现了引入起始依赖模块的默认配置,开发者要做的仅是开启、关闭和重写某些配置。
通过和传统的Java Web项目从开发到部署方方面面的对比,相信对于Java Web初级开发人员尤其对Spring Boot还不太了解的朋友对学习Spring Boot的重要性有更深刻的认识,也感谢大家对晓码课堂的一如既往的关注!