Spring与Spring Boot之间的区别

news2025/1/16 13:48:44

Spring和Spring Boot是用于开发Java企业应用的两个主流框架。虽然它们都属于Spring生态系统的一部分,但是它们各自有不同的使用场景和特点。

在本文中,我们将探讨Spring与Spring Boot之间的差异,针对他们之间特性的差异,做一个详细的比较。

Spring框架与Spring Boot之间的差异

下表提供了Spring与Spring Boot之间的详细比较。
在这里插入图片描述

Spring与Spring Boot的深入对比

让我们进一步比较上述列出的一些特性,以便更详细地理解这两个框架在配置和使用上的不同之处。

依赖管理

在传统的Spring框架中,依赖管理主要是通过手动配置的。开发者负责明确声明和管理其项目文件中依赖的版本。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>spring-project</artifactId>
    <version>1.0.0</version>

    <dependencies>
        <!-- Spring Core -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.10.RELEASE</version>
        </dependency>

        <!-- Spring Web -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.3.10.RELEASE</version>
        </dependency>

        <!-- Other dependencies -->
    </dependencies>

</project>

Spring Boot通过“启动模块”进一步简化了依赖管理。我们只需要管理父启动模块的版本,其余的一切都会自动解析。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>spring-boot-project</artifactId>
    <version>1.0.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.1</version> <!-- Spring Boot version -->
    </parent>

    <dependencies>
        <!-- Spring Boot Starter for Web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Other dependencies -->
    </dependencies>

</project>

自动配置

自动配置是Spring Boot的一个关键特性,而这一特性在传统Spring应用中不存在。

例如,在传统Spring应用中,通常需要通过 XML 或 Java 代码配置DispatcherServlet、定义Controller、视图解析器以及映射URL等。

@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {

  @Override
  public void configureViewResolvers(ViewResolverRegistry registry) {
    registry.jsp("/WEB-INF/views/jsp/", ".jsp").cache(true);
  }

  @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }
  //...
}

Spring Boot通过提供约定优于配置以及合理的默认值来简化MVC配置,只需包含‘web’启动模块即可。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

上述启动器中包含的自动配置会自动执行以下操作:

  • 配置默认视图解析器(Thymleaf 和 JSP)
  • 自动配置资源处理器,处理CSS\JavaScript\图片等
  • 包括对不同媒体类型的支持,例如 JSON、XML 和 HTML。
  • 提供默认的异常处理机制 默认国际化支持
  • 其他

安全配置

在Spring中,我们可以根据自己的偏好使用基于Java或XML的形式来配置系统安全。我们自己定义所有安全相关的Bean和配置。

在Spring Boot中,仅仅通过添加安全启动模块(spring-boot-starter-security),自动配置就会配置一系列默认的安全特性。

  • 创建一个用户名为“user”的账户,并自动生成密码。
  • 自动配置用于API访问的基本身份验证。
  • 为Web应用程序设置默认的登录表单。
  • 默认启用跨站请求伪造(CSRF)保护,以防止CSRF攻击。
  • 启用对应用程序中与安全相关活动的监控和追踪。
  • 配置会话管理,包括会话超时及会话固定保护。
  • 默认情况下,使用bcrypt算法自动加密密码。
  • 以及更多安全特性。

结论

本文中对Spring与Spring Boot的比较是基于它们各自的特性来进行的。选择使用哪一种取决于项目的具体需求、复杂程度以及开发目标。
请始终参阅官方文档以获取有关每个框架的功能和特性的最新信息。
祝学习愉快!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2198945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网安加·百家讲坛 | 潘继平:AI赋能DevOps平台:全面提升代码安全性

作者简介&#xff1a;潘继平&#xff0c;中国软协项目管理专委会专家&#xff0c;深圳市软件行业协会特聘专家。华为土耳其研究所外聘高级项目顾问&#xff0c;负责华为云应用生态圈产品线研发管理。曾为华为全球技术服务中心、华为制造IT以及华为流程IT解决方案提供等多个部门…

图书商城|基于springBoot的图书商城管理系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数…

pgadmin4敏感信息泄露 CVE-2024-9014

0x01 产品描述&#xff1a; pgAdmin是全球最先进的开源数据库Postgres的领先开源管理工具。 pgAdmin 4旨在满足新手和经验丰富的Postgres用户的需求&#xff0c;提供了强大的图形界面&#xff0c;可简化数据库对象的创建&#xff0c;维护和使用。其可以在Linux&#xff0c;Unix…

Python绘制--绘制心形曲线

今天&#xff0c;我们将通过Python代码来绘制一个心形曲线&#xff0c;这是一个经典的数学表达。 一、心形曲线的数学原理 心形曲线&#xff0c;也被称为心脏曲线&#xff0c;是一个代数曲线&#xff0c;可以通过参数方程定义。其数学表达式如下&#xff1a; x16sin⁡3(t)x16…

【汇编语言】寄存器(CPU工作原理)(六)—— 修改CS,IP的指令以及代码段

文章目录 前言1. 修改CS、IP的指令2. 问题分析:CPU运行的流程3. 代码段小结结语 前言 &#x1f4cc; 汇编语言是很多相关课程&#xff08;如数据结构、操作系统、微机原理&#xff09;的重要基础。但仅仅从课程的角度出发就太片面了&#xff0c;其实学习汇编语言可以深入理解计…

flatten-maven-plugin统一版本打包失败问题记录

问题&#xff1a; dependencies.dependency.version for xxx:jar is missing. xxx:${revision} 子模块打包不会自动打包依赖的其他包 排查过程&#xff1a; 1&#xff1a;查看flatten-maven-plugin版本是否有冲突&#xff0c;与maven.compiler版本是否有冲突 目前版本&…

成都睿明智科技有限公司怎么样靠谱吗?

随着短视频与直播的深度融合&#xff0c;抖音电商凭借其强大的流量入口、精准的算法推荐以及便捷的购物体验&#xff0c;迅速崛起。对于传统企业和新兴品牌而言&#xff0c;这无疑是一个不可多得的机遇。然而&#xff0c;如何在这片红海中脱颖而出&#xff0c;就需要借助专业的…

u盘部分文件无故消失是怎么回事?5个妙招让其重新出现!

在使用U盘的过程中&#xff0c;我们也会遇上U盘部分文件无故消失的烦恼。防不胜防的数据丢失让我们的生活节奏被扰乱&#xff0c;不免得会心生烦躁与焦虑。但现在已经有很多方法去应对U盘的文件丢失&#xff0c;能够帮助我们找回丢失的重要资料&#xff01;U盘文件无故消失了怎…

Spring Boot 之 Lombok 使用详解

Lombok 是一个 Java 库&#xff0c;它通过注解自动生成样板代码&#xff0c;例如 getter、setter、构造函数、equals()、hashCode() 等&#xff0c;从而减少代码冗余&#xff0c;提高开发效率。在 Spring Boot 项目中使用 Lombok 可以使代码更加简洁易读。 本文将详细介绍 Lom…

YOLO11改进|注意力机制篇|引入线性注意力机制FLAttention

目录 一、【FLA】注意力机制1.1【FLA】注意力介绍1.2【FLA】核心代码 二、添加【FLA】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【FLA】注意力机制 1.1【FLA】注意力介绍 下图是【FLA】的结构图&#xff0c;让我们简单分…

Java并发:同步工具类(信号量,等待完成,阶段同步,Exchanger,Phaser)

1&#xff0c;信号量&#xff08;Stemaphore&#xff09; Semaphore也就是信号量&#xff0c;提供了资源数量的并发访问控制&#xff0c;其使用代码很简单&#xff0c;如下所示&#xff1a; // 一开始有5份共享资源。第二个参数表示是否是公平 // 公平锁排队&#xff0c;非公…

人脸识别face-api.js应用简介

前阵子学习了一下face-api.js &#xff0c;偶有心得&#xff0c;跟大家分享一下。 face-api.js的原始项目是https://github.com/justadudewhohacks/face-api.js &#xff0c;最后一个release是2020年3月22日的0.22.2版&#xff0c;组件较老&#xff0c;API文档很全&#xff0c;…

AI产品经理面试,背烂这100个问题就稳了

❎传统的产品经理&#xff0c;侧重于用户体验与业务流程的优化&#xff0c;强调“以人为本” ✅而AI产品经理更加注重的&#xff0c;视如何将技术应用在业务问题上 ➡虽然不需要会写代码&#xff0c;但也要深入理解AI模型的运作原理&#xff0c;包括大模型技术&#xff08;如…

【Linux系统编程】第二十九弹---深入探索Linux文件系统:从磁盘存储到inode结构与文件操作

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、文件系统相关知识 2、磁盘 2.1、理论补充 2.2、看看物理磁盘 2.3、磁盘的存储结构 2.3、对磁盘的存储进行逻辑抽象 3、…

【北京迅为】《STM32MP157开发板嵌入式开发指南》-第二十章 makefile 基本语法(上)

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

头疼来袭?别急,这份自救指南让你秒变“不痛达人”!

在这个快节奏的时代&#xff0c;头疼仿佛成了我们生活中的“不速之客”&#xff0c;时不时就来敲敲门&#xff0c;让人措手不及。无论是工作压力山大、熬夜追剧后的疲惫&#xff0c;还是突如其来的偏头痛&#xff0c;都让人苦不堪言。但别怕&#xff0c;今天就来给大家送上一份…

基于SpringBoot 助农农产品销售平台小程序 【附源码】

基于SpringBoot 助农农产品销售平台小程序 效果如下&#xff1a; 管理员主界面 用户管理界面 农户管理界面 农户主界面 小程序首页界面 农产品详情界面 详情界面 研究背景 随着互联网技术的快速发展和智能手机的普及&#xff0c;传统的农产品销售模式面临着诸多挑战。信息不…

《RabbitMQ篇》交换机基本概览

生产者都是把消息给交换机&#xff0c;由交换机分发给消息队列。 routingKey&#xff1a;路由键&#xff0c;也可称为绑定&#xff0c;是交换机和队列之间的桥梁&#xff0c;交换机会根据routingKey来把消息转发到对应的队列。 Fanout 不处理路由键。你只需要简单的将队列绑定…

【业务场景】最全的购物车设计与实现

前言 博主最近在做一个购物商城&#xff0c;正好设计到购物车模块&#xff0c;于是乎全面的来聊一聊购物车模块实现的一些核心要点吧&#xff0c;很值得反复品味的设计&#xff0c;当需要实现购物车的时候&#xff0c;本文应该拿来就能用。 目录 1.需要解决的核心问题清单 2…

下一代电源管理:Modern Standby与S3睡眠的对比

Modern Standby与S3睡眠的对比 一、引言二、Modern Standby概述三、S3睡眠模式概述四、Modern Standby与S3睡眠的差异五、实际应用和适用场景六、测试Modern Standby的性能6.1、PowerCfg命令行工具6.2、Windows Performance Toolkit 七、总结 一、引言 电源管理在现代计算设备…