Spring和Spring Boot的区别

Spring和Spring Boot的区别

  • [1 什么是Spring?](#1 什么是Spring?)
  • [2 什么是Spring MVC?](#2 什么是Spring MVC?)
  • [3 什么是Spring Boot?](#3 什么是Spring Boot?)
  • [4 总结](#4 总结)

1 什么是Spring?

Spring 是一个包含许多不同的技术的流行开源框架,用于构建企业级 Java 应用程序,并允许我们以自然的方式去组合它们。 具有安全、低代价、灵活的特性,使得开发过程更加简便以及应用更加安全,帮助开发人员构建高效、可维护和可扩展的企业级应用程序。

Spring 框架由多个模块组成,每个模块都专注于不同的功能,以便根据应用程序的需求选择和集成。

下面展示了Spring框架的核心技术。

核心技术 作用
IoC(控制反转) IOC负责定义对象的实例化、组装、和管理。bean 是一个由 Spring IoC 容器实例化、组装和管理的对象。交由IOC管理的对象才叫Bean,否则只是个对象。
AOP(Aspect-Oriented Programming,面向切面编程) 实现诸如日志记录、事务管理等横切关注点的功能,而不必混淆业务逻辑和横切关注点
Data Access(数据访问) 支持JDBC、ORM(Object Relational Mapping ,如Hibernate)、JPA(Java Persistence API)、事务管理等
MVC 框架 Spring MVC 是一个基于模型-视图-控制器(Model-View-Controller,MVC)设计模式的 Web 应用程序框架,提供了灵活的、基于注解的方式来开发 Web 应用程序。
Spring Security Spring Security 是一个功能强大的安全性框架,用于保护企业应用程序的安全性,包括身份验证、授权、攻击防护等功能。
Spring Testing Spring Testing用于帮助开发人员编写和执行各种类型的测试,以确保 Spring 应用程序的质量和稳定性。通过使用 Spring Testing,开发人员可以更轻松地进行单元测试、集成测试和端到端测试,并在开发过程中实现高效的测试驱动开发(TDD)和持续集成(CI)。

2 什么是Spring MVC?

Spring MVC 是 Spring 框架的一个模块,用于构建基于 MVC(Model-View-Controller)设计模式的 Web 应用程序。它提供了一个灵活而强大的框架,用于开发 Web 应用程序,并且在传统的 Java EE 开发中得到了广泛的应用。

在 Spring MVC 中,应用程序被组织成三个主要组件:

  1. 模型(Model): 模型代表应用程序中的数据和业务逻辑。模型负责管理应用程序中的数据,处理业务逻辑,以及为视图准备数据。模型通常是一个普通的 Java 对象(POJO),它不依赖于任何特定的 Web 技术。
  2. 视图(View): 视图负责显示模型中的数据,并向用户呈现用户界面。视图通常是一个 JSP、Thymeleaf等模板文件,它们负责将模型中的数据渲染为 HTML 页面。
  3. 控制器(Controller):控制器是应用程序的中心协调者,它接收用户的请求并根据请求选择适当的处理逻辑。控制器从模型中获取数据,选择合适的视图,并将数据传递给视图进行渲染。控制器通常是一个带有@Controller 注解的 Java 类,它处理 HTTP 请求并将其映射到相应的处理方法。

Spring MVC 框架提供了许多功能和特性,使得开发 Web 应用程序变得更加简单和高效:

  1. 请求映射: Spring MVC 允许开发人员使用各种灵活的方式来定义请求的映射规则,支持RESTful风格api,包括基于 URL、HTTP 方法、请求参数等的映射。
  2. 数据绑定和验证: Spring MVC 提供了数据绑定和验证的功能,可以方便地将请求参数绑定到模型中,并进行数据验证。
  3. 视图解析: Spring MVC 支持多种视图技术,包括 JSP、Thymeleaf等,开发人员可以根据需要选择合适的视图技术。
  4. 拦截器: Spring MVC 允许开发人员使用拦截器来拦截请求并进行一些预处理或后处理操作,例如身份验证、日志记录等。
  5. 异步请求:出于安全原因,浏览器禁止对当前源之外的资源进行 AJAX 调用。Spring MVC 允许您处理 CORS(跨域资源共享)。
  6. HTTP 缓存:HTTP 缓存可以显着提高 Web 应用程序的性能。 HTTP 缓存围绕 Cache-Control 响应标头以及随后的条件请求标头。 Cache-Control 向私有(例如浏览器)和公共(例如代理)缓存提供有关如何缓存和重用响应的建议。
  7. MVC配置:MVC Java 配置和 MVC XML 命名空间提供适合大多数应用程序的默认配置以及用于自定义它的配置 API。

Spring MVC 提供了一个强大而灵活的框架,用于构建基于 MVC 设计模式的 Web 应用程序。它通过将应用程序分解为模型、视图和控制器三个组件,并提供了xml、注解和配置类的配置方式,使得开发人员可以轻松地开发和管理Web 应用程序。

3 什么是Spring Boot?

Spring Boot 是 Spring Framework 的一个子项目,旨在简化和加速 Spring 应用程序的开发和部署过程。它提供了一组开箱即用的功能和约定,使得开发人员可以更快地创建基于 Spring 的应用程序,并且不需要进行繁琐的配置。

Spring Boot 的核心思想是约定优于配置(Convention over Configuration),它通过默认配置和自动配置来减少开发人员的工作量,并提供了一种快速、简单的方式来构建生产就绪的应用程序。

以下是 Spring Boot 的一些主要特性和功能:

  1. 自动配置(Auto-configuration): Spring Boot 提供了大量的自动配置,根据应用程序的依赖关系自动配置Spring 应用程序上下文和其他组件。
  2. 启动依赖(Starter dependencies): Spring Boot 提供了一组启动器,这些依赖包含了常用的库和框架,例如 Web、数据访问、安全性等。开发人员可以根据应用程序的需求选择合适的起步依赖,从而快速构建应用程序。
  3. 嵌入式容器(Embedded containers): Spring Boot 支持内嵌的 Servlet 容器,例如Tomcat、Jetty 和 Undertow。这意味着开发人员可以将应用程序打包成一个可执行的 JAR文件,并且不需要额外的应用服务器即可运行应用程序
  4. Actuator: Spring Boot Actuator 提供了一组用于监控和管理应用程序的端点(endpoints),包括健康检查、应用信息、环境信息等。开发人员可以通过 Actuator来监控应用程序的运行状况,并在生产环境中进行故障排查和性能调优。
  5. 外部化配置(Externalized configuration): Spring Boot 支持将应用程序的配置信息外部化,例如使用属性文件、YAML文件或环境变量来配置应用程序的属性和行为。

Spring Boot 是一个强大的框架,他提供了许多 Spring 应用程序的相关启动器(starter),这些启动器经过约定配置以及按需引入,提供给Spring应用程序快速开发的环境,加快开发和部署过程。它通过自动配置、嵌入式容器等功能,使得开发人员可以更快速地构建、部署应用程序,并且可以更加专注于业务逻辑的开发。

4 总结

Spring框架一般指的是Spring,Spring是Spring组件与技术的集合。Spring包括了Spring MVC。Spring Boot是Spring的子项目,Spring Boot为Spring、Spring MVC提供自动化配置、内置嵌入式的容器(Tomcat)、简化配置,加快了Spring应用程序的开发。并且,Spring Boot为了简化开发,将功能封装为一个个的starter,包括了web、jdbc、cache、aop、tomcat、logging等,需要功能只用引入相应的starter。

总的来说,Spring包含了Spring MVC。Spring Boot包含了Spring。Spring Boot提供了对Spring框架的功能的封装和配置的约定,用以简化开发,以及提供常用插件的配置。

相关推荐
morris1316 分钟前
【SpringBoot】Xss的常见攻击方式与防御手段
java·spring boot·xss·csp
七星静香31 分钟前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
Jacob程序员32 分钟前
java导出word文件(手绘)
java·开发语言·word
ZHOUPUYU32 分钟前
IntelliJ IDEA超详细下载安装教程(附安装包)
java·ide·intellij-idea
stewie635 分钟前
在IDEA中使用Git
java·git
Elaine2023911 小时前
06 网络编程基础
java·网络
G丶AEOM1 小时前
分布式——BASE理论
java·分布式·八股
落落鱼20131 小时前
tp接口 入口文件 500 错误原因
java·开发语言
想要打 Acm 的小周同学呀1 小时前
LRU缓存算法
java·算法·缓存
镰刀出海1 小时前
Recyclerview缓存原理
java·开发语言·缓存·recyclerview·android面试