转摘:Spring、SpringMVC和Springboot的区别
//杂乱摘抄:
说得更简便一些:Spring 最初利用“工厂模式”(DI)和“代理模式”(AOP)解耦应用组件。大家觉得挺好用,于是按照这种模式搞了一个 MVC框架(一些用Spring 解耦的组件),用开发 web 应用( SpringMVC )。然后有发现每次开发都写很多样板代码,为了简化工作流程,于是开发出了一些“懒人整合包”(starter),这套就是 Spring Boot。
所以,用最简练的语言概括就是:
Spring 是一个“引擎”;
Spring MVC 是基于Spring的一个 MVC 框架 ;
Spring Boot 是基于Spring4的条件注册的一套快速开发整合包。
2、Spring MVC是基于 Servlet 的一个 MVC 框架 主要解决 WEB 开发的问题因为 Spring 的配置非常复杂各种XML、 JavaConfig、hin处理起来比较繁琐于是为了简化开发者的使用,从而创造性地推出了Spring boot,约定优于配置简化了spring的配置流程。
Spring MVC 个人理解:对一个网络请求基于servlet 改善、分层。里面有多个hashMap 关联着请求路径和处理的方法。...哎说不下去了
//这文章就够清晰了。
Spring、SpringMVC和SpringBoot看这一篇就够了! - 知乎 https://zhuanlan.zhihu.com/p/63117304
摘抄如下:
一、概念
1、Spring
Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。
2、SpringMVC
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。SpringMVC是一种web层mvc框架,用于替代servlet(处理|响应请求,获取表单参数,表单校验等。SpringMVC是一个MVC的开源框架,SpringMVC=struts2+spring,springMVC就相当于是Struts2加上Spring的整合。
3、SpringBoot
Springboot是一个微服务框架,延续了spring框架的核心思想IOC和AOP,简化了应用的开发和部署。Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题--->习惯大于约定。
二、原理和结构
1、Spring的原理和组成
Spring为简化我们的开发工作,封装了一系列的开箱即用的组件功能模块,包括:Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、Spring Test等。如下图:
简化的理解图:
2、SpringMVC的原理和组成
从上图中可以看出:SpringMVC是属于SpringWeb里面的一个功能模块(SpringWebMVC)。专门用来开发SpringWeb项目的一种MVC模式的技术框架实现。其原理如下:
MVC:Model(模型)、VIew(视图)、Controller(控制器);我们从开始接触并学习javaWeb开发就知道MVC这一种架构,如早起的Sturts1、Sturts2等。
3、SpringBoot的原理和特性
Spring Boot
基本上是
Spring
框架的扩展,它消除了设置
Spring
应用程序所需的
XML配置
,为更快,更高效的开发生态系统铺平了道路。
Spring Boot
中的一些特点:
- 创建独立的
spring
应用。 - 嵌入
Tomcat
,
Jetty
Undertow
而且不需要部署他们。 - 提供的“starters” poms来简化
Maven
配置 - 尽可能自动配置
spring
应用。 - 提供生产指标,健壮检查和外部化配置
- 绝对没有代码生成和
XML
配置要求。
组成和结构如下图:
从图中可以看出SpringBoot是包含了Spring的核心(IOC)和(AOP);以及封装了一些扩展,如Stater:
三、区别与总结
1.简单理解为
:Spring包含了SpringMVC,而SpringBoot又包含了Spring或者说是在Spring的基础上做得一个扩展。
2、关系大概就是这样
:
spring mvc < spring < springboot
3、Spring Boot
对比
Spring
的一些优点包括
:
- 提供嵌入式容器支持
- 使用命令
java -jar
独立运行jar - 在外部容器中部署时,可以选择排除依赖关系以避免潜在的jar冲突
- 部署时灵活指定配置文件的选项
- 用于集成测试的随机端口生成
4、结论
Spring Boot
只是
Spring
本身的扩展,使开发,测试和部署更加方便。