Spring、SpringMVC和SpringBoot
Spring就像一个大家族,里面包含了很多衍生产品,其中最为出名的就是SpringMVC和SpringBoot,那么这三者之间是什么关系呢?SpringMVC和SpringBoot又专门用来做什么呢?
Spring
Spring 是一个开源容器框架。
可以接管 web 层,业务层,dao 层,持久层的组件,并且可以配置各种 bean,和维护 bean 与 bean 之间的关系。
其核心就是控制反转(IOC)和面向切面(AOP)。
简单的说就是一个分层的轻量级开源框架。
SpringMVC
SpringMVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面。
SpringMVC 是 Web 层 MVC 框架,用于替代 servlet(处理 | 响应请求,获取表单参数,表单校验等)。
某种意义上来说 SpringMVC 可以相当于是 Struts2 加上 Spring 的整合。
SpringBoot
SpringBoot 是一个微服务框架,延续了 Spring 框架的核心思想 IOC 和 AOP,简化了应用的开发和部署。
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于 Spring 应用的开发,而无需过多关注 XML 的配置。
提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题-> 习惯大于约定。
SpringBoot 的核心在于自动配置。
关系说明
SpringMVC 和 Spring 的关系
Spring 为简化我们的开发工作,封装了一系列的开箱即用的组件功能模块。
包括:Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、Spring Test 等。
如下图:
因此:
SpringMVC 是属于 SpringWeb 里面的一个功能模块(SpringWebMVC)。
专门用来开发 SpringWeb 项目的一种 MVC 模式的技术框架实现。
Spring 和 SpringBoot 的关系
SpringBoot 基本上是 Spring 框架的扩展,它消除了设置 Spring 应用程序所需的 XML 配置,为更快,更高效的开发生态系统铺平了道路。
我们通过了解 SpringBoot 所具备的能力就很容易理解 Spring 和 SpringBoot 的关系。
- 创建独立的 spring 应用。
- 嵌入 Tomcat, JettyUndertow 而且不需要部署他们
- 提供的“starters” poms 来简化 Maven 配置
- 尽可能自动配置 spring 应用
- 提供生产指标,健壮检查和外部化配置
- 绝对没有代码生成和 XML 配置要求
从功能角度来看,SpringBoot 可以理解为一个可以一键发布的 Spring 应用。
三者关系概述
spring mvc < spring < springboot
- Spring 包含了 SpringMVC
- SpringBoot 包含了 Spring
- SpringBoot 在 Spring 的基础上进行了增强
SpringBoot 下的应用创建和部署
回忆一下在没有 SpringBoot 之前我们创建和发布一个应用需要做那些事情?
- pom.xml 中引入 Spring 依赖
- pom.xml 中引入第三方依赖,并通过配置文件与 Spring 整合(Bean 管理)
- 解决各类依赖冲突(尤其是第三方的依赖版本冲突)
- 选择一个运行的容器(如:Tomcat,以下已 Tomcat 举例)
- 在环境上安装好 Tomcat 容器
- 配置 Tomcat 容器的 server.xml(应用路径、端口等)
- 通过 maven 编译打包(pom.xml 需配置编译打包插件)
- 将 War 包放到 Tomcat 容器指定路径
- 启动 Tomcat 容器(bin/startup.sh)
通过 SpringBoot 来创建应用我们需要做什么?
- pom.xml 中引入 SpringBoot 的 starter 依赖
- pom.xml 中引入第三方 starter(无需整合和依赖冲突,starter 已按照约定配置做好整合)
- 通过 maven 编译打包(pom.xml 仅需指定发布格式,如 Jar 包)
- 将 Jar 包放到环境上
- java -jar xxx.jar(完成启动)
一句话结论
Spring 包含了 SpringMVC,SpringBoot 是 Spring 的扩展,使开发,测试和部署更加方便。
- Spring 是一个核心引擎
- SpringMVC 是基于核心引擎的一个 MVC 框架(用于 Web 开发)
- SpringBoot 是基于核心引擎的一套快速开发整合包
