赞
踩
Spring 框架就像一个大家族,有众多衍生产品,例如 Boot、Security、JPA 等等,但他们的基础都是 Spring 的 IOC 和 AOP。IOC 提供了依赖注入的容器,AOP 解决了面向切面的编程;然后在此二者的基础上实现了其他延伸产品的高级功能。
Spring MVC 是 Spring 中的一个很重要的模块,是基于 Servlet 的一个 MVC 框架,主要赋予 Spring 快速构建 MVC 架构的 Web 程序开发的能力。MVC 是模型(Model)、视图(View)、控制器(Controller)的简写,其核心思想是通过将业务逻辑、数据、显示分离来组织代码。但是使用 Spring 进行开发时各种配置过于麻烦,比如开启某些 Spring 特性时,需要用 XML 或 Java 进行显式配置。于是,Spring Boot 诞生了!
Spring Boot 的诞生旨在简化 Spring 的开发,比如减少各种配置文件的开发。
简单来说就是:Spring 最初利用“工厂模式”(DI)和“代理模式”(AOP)解耦应用组件。大家觉得挺好用,于是按照这种模式搞了一个 MVC 框架(一些用 Spring 解耦的组件),用来开发 web 应用程序,最终形成了 SpringMVC。然后有、又发现每次开发都需要写很多样板代码,为了简化工作流程,于是开发出了一些“懒人整合包”(比如starter),这套就是 Spring BOOT。
Spring MVC 提供了一种轻度耦合的方式来开发 web 应用程序。
Spring MVC 是 Spring 的一个模块,一个 web 框架。通过 Dispatcher Servlet、ModelAndView 和 View Resolver 来使得开发 web 应用程序变得很容易。解决的问题领域是网站应用程序或者服务开发——URL 路由、Session、模板引擎、静态 Web 资源等等。
Spring Boot实现了自动配置,降低了项目搭建的复杂度。Spring Boot 引入自动配置的概念,让项目配置变得很容易。Spring Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。同时它集成了大量常用的第三方库配置(例如,Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的 Spring Boo t应用都只需要非常少量的配置代码,使开发者能够更加专注于业务逻辑。
对使用者来说,换用 Spring Boot 以后,项目初始化方法变了,配置文件变了,另外就是不需要单独安装 Tomcat 这类容器服务器了,maven 打出 jar 包直接跑起来就是个网站,但是最核心的业务逻辑实现与业务流程实现没有任何变化。
Spring 是一个“引擎”;Spring MVC 是基于 Spring 的一个 MVC 框架 ;Spring Boot 是基于Spring4 的条件注册的一套快速开发整合包。
我们平时说的 Spring,一般指代的是 Spring Framework,它是一个开源的应用程序框架,提供了一个简易的开发方式,通过这种开发方式,将避免那些可能致使代码变得繁杂混乱的大量的业务/工具对象,说的更通俗一点就是由框架来帮你管理这些对象,包括它的创建,销毁等,比如基于 Spring 的项目里经常能看到的 Bean,它代表的就是由 Spring 管辖的对象。
Spring MVC 是 Spring 的一部分,Spring 出来以后,大家觉得很好用,于是按照这种模式设计了一个 MVC 框架(一些用 Spring 解耦的组件),主要用于开发WEB应用和网络接口,它是Spring的一个模块,通过 Dispatcher Servlet, ModelAndView 和 View Resolver,让应用开发变得很容易。
初期的 Spring 通过代码加配置文件的形式为项目提供了良好的灵活性和扩展性,但随着 Spring 越来越庞大,其配置文件也越来越繁琐,太多复杂的 xml 文件也一直是 Spring 被人诟病的地方,特别是近些年其他简洁的 WEB 方案层出不穷,如基于 Python 或 Node.Js,几行代码就能实现一个 WEB 服务器,对比起来,大家渐渐觉得 Spring 那一套太过繁琐,此时,Spring 社区推出了 Spring Boot,它的目的在于实现自动配置,降低项目搭建的复杂度,如需要搭建一个接口服务,通过 Spring Boot,引入响应的依赖,便可很轻易的实现:
- //引入spring-boot-starter-web依赖
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- //声明Spring Boot应用,直接写业务逻辑即可
- @Controller
- @SpringBootApplication
- public class MockServerApplication {
- @RequestMapping("/helloWorld")
- @ResponseBody
- String HelloWorld() {
- return "HelloWorld";
- }
-
- public static void main(String[] args) {
- SpringApplication.run(MockServerApplication.class, args);
- }
- }
甚至都不用额外的 WEB 容器,直接生成 jar 包执行即可,因为 spring-boot-starter-web 模块中包含有一个内置 tomcat,可以直接提供容器使用;基于 Spring Boot 并不是说原来的配置没有了,而是 Spring Boot 有一套默认配置,我们可以把它看做比较通用的约定,而 Spring Boot 遵循的也是约定大于配置原则,同时,如果你需要使用到 Spring 以往提供的各种复杂但功能强大的配置功能,Spring Boot 一样支持。
在 Spring Boot 中,你引入的所有包都是各种 starter 形式,如:
spring-boot-starter-web-services
,针对 SOAP Web Services
spring-boot-starter-web
,针对 Web 应用与网络接口
spring-boot-starter-jdbc
,针对 JDBC
spring-boot-starter-data-jpa
,基于 hibernate 的持久层框架
spring-boot-starter-cache
,针对缓存支持
这三者专注的领域不同,解决的问题也不一样。总的来说,Spring 就像一个大家族,有众多衍生产品,例如 Boot,Security,JPA 等等。但他们的基础都是 Spring 的 IOC 和 AOP,IOC 提供了依赖注入的容器,而 AOP 则解决了面向切面的编程,然后在此两者的基础上实现了其他衍生产品的高级功能;Spring MVC 是基于 Servlet 的一个 MVC 框架,主要解决 WEB 开发的问题,因为 Spring 的配置非常复杂,各种 xml,properties 处理起来比较繁琐。于是为了简化开发者的使用,Spring 社区创造性地推出了 Spring Boot,它遵循约定优于配置,极大降低了 Spring 使用门槛,但又不失 Spring 原本灵活强大的功能。
总结来说就是:Spring MVC 和 Spring Boot 都属于 Spring 的产品,Spring MVC 是基于 Spring 的一个 MVC 框架,而 Spring Boot 是基于 Spring 的一套快速开发整合包。
本文参考自:Spring、Spring Boot与Spring MVC - 掘金
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。