SpringBoot启动web项目的最少依赖

server/2024/10/21 22:17:36/

1、pom.xml 文件:启动web项目

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.manmanqiu</groupId><artifactId>asdasdas</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!--对全栈web开发的支持,包括Tomcat和spring-webmvc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.18</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

2、为什么:只需要web依赖?

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

spring-boot-starter-web 依赖已经包括了启动一个 Web 项目所需的所有关键组件,包括嵌入式 Tomcat 和 Spring MVC 框架。因此,你不需要额外配置 Tomcat 服务器,它已经默认配置好并会在应用启动时运行。

  • 嵌入式 Tomcat
spring-boot-starter-web 依赖默认包含 嵌入式 Tomcat 服务器,这是 Spring Boot 的一大特点。你不需要单独配置外部服务器,Spring Boot 会自动将 Tomcat 嵌入到应用程序中,并在启动时运行 Tomcat 作为 Web 容器来处理 HTTP 请求。
  • Spring MVC
这个依赖包中包含了 Spring MVC 框架,它是构建 Web 应用的核心模块。
Spring MVC 负责处理 HTTP 请求并将它们映射到适当的控制器方法。
  • Jackson
Jackson 是处理 JSON 序列化和反序列化 的工具库,它被用来处理 REST API 中常见的 JSON 数据格式。这个库也是 spring-boot-starter-web 依赖中的一部分,允许你轻松地构建 RESTful 服务。
  • Spring Boot 自动配置
Spring Boot 通过自动配置功能简化了项目配置。
基于依赖的存在,Spring Boot 自动配置了一些必要的组件。
例如,因为你引入了 spring-boot-starter-web,它会自动配置一个嵌入式 Tomcat 服务器和 Spring MVC 组件。

3、该web依赖的:依赖树

+- org.springframework.boot:spring-boot-starter-web:jar:2.7.18:compile
|  +- org.springframework.boot:spring-boot-starter:jar:2.7.18:compile
|  |  +- org.springframework.boot:spring-boot:jar:2.7.18:compile
|  |  +- org.springframework.boot:spring-boot-autoconfigure:jar:2.7.18:compile
|  +- org.springframework.boot:spring-boot-starter-json:jar:2.7.18:compile
|  +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.7.18:compile
|  +- org.springframework:spring-web:jar:5.3.25:compile
|  +- org.springframework:spring-webmvc:jar:5.3.25:compile
|  +- com.fasterxml.jackson.core:jackson-databind:jar:2.13.5:compile
org.springframework.boot:spring-boot-starter-web 依赖包含了 org.springframework.boot:spring-boot-starter 的原因是,Spring Boot Starter 依赖(如 spring-boot-starter-web)是通过组合多个常用依赖来简化项目配置的,这就是 Spring Boot"starter"概念。spring-boot-starter 的作用
spring-boot-starter 是所有 Spring Boot Starter 依赖的基础,它包含了一些基础的配置和工具,使得 Spring Boot 项目能顺利启动并运行。它负责引入一些基础的、通用的依赖。以下是它的主要组成部分:1. spring-boot
spring-boot 包含了启动 Spring Boot 应用的核心类,比如 SpringApplication 类。这个类的 run() 方法用于启动你的 Spring Boot 应用。2. spring-boot-autoconfigure
spring-boot-autoconfigure 是 Spring Boot 中的自动配置机制,它基于你的类路径上的依赖,自动配置应用所需的 Bean 和组件。比如你有 spring-boot-starter-web 依赖,Spring Boot 自动为你配置了 Web 服务器(如嵌入式 Tomcat)、Spring MVC 相关的 ControllerView Resolver 等。spring-boot-starter-web 和 spring-boot-starter 的关系
spring-boot-starter-web 这个依赖主要是为 Web 应用设计的,它不仅需要 Web 相关的依赖(如 spring-webmvc 和 spring-boot-starter-tomcat),还需要 Spring Boot 的基础配置和功能,因此它包含了 spring-boot-starter 作为依赖之一。
spring-boot-starter 则提供了所有 Spring Boot 项目都需要的通用基础组件,比如 spring-boot 和 spring-boot-autoconfigure。
总结:
org.springframework.boot:spring-boot-starter 是 Spring Boot 项目的基础依赖,spring-boot-starter-web 依赖它来确保应用有核心启动类和自动配置机制,这样你才能够顺利启动和运行 Spring Boot Web 应用。

4、spring-boot-starter 会重复引入吗?

  • 问题如下

spring-boot-starter-data-jpa spring-boot-starter-security 并没有指定spring-boot-starter 版本的情况下,

是以spring-boot-starter-data-jpa 加载时的版本为主吗? spring-boot-starter-security 跟随吗?

在你没有手动指定 spring-boot-starter 的版本时,Spring Boot 的依赖管理机制会自动确保所有 starter(如 spring-boot-starter-data-jpa 和 spring-boot-starter-security)使用相同的版本。这是通过 spring-boot-dependencies BOM(Bill of Materials)进行统一版本管理的。BOM 的作用是什么?
BOM 是一个 Maven 特性,Spring Boot 使用它来提供一个依赖版本的统一管理,使得在你的 pom.xml 文件中不需要显式地为每个依赖指定版本。spring-boot-starter-data-jpa 和 spring-boot-starter-security 这两个依赖,在内部会依赖于 spring-boot-starter。
当你引入这两个依赖时,它们会根据当前 Spring Boot 的版本,通过 BOM 确定每个相关依赖的版本。这意味着,两个依赖引入的 spring-boot-starter 版本是完全一致的,由 Spring Boot 版本统一决定。
示例说明
假设你没有引入 spring-boot-starter-parent,而直接引入了 spring-boot-starter-data-jpa 和 spring-boot-starter-security,它们的内部依赖树是:spring-boot-starter-data-jpa
依赖于 spring-boot-starter
通过 BOM 确定它所使用的 spring-boot-starter 版本。
spring-boot-starter-security
同样依赖于 spring-boot-starter
版本由 BOM 决定,与 spring-boot-starter-data-jpa 保持一致。
你不需要手动指定版本,Maven 会根据 BOM 来统一决定这两个依赖中的 spring-boot-starter 使用的版本。因此,不是其中一个依赖决定版本,另一个跟随,而是它们都通过 BOM 使用相同的版本。如何 BOM 起作用
当你引入 spring-boot-starter-parent 或者通过 spring-boot-dependencies 进行版本管理时,BOM 会自动为你定义所有相关依赖的版本。你只需要指定 Spring Boot 的版本,Maven 会为每个 Spring Boot 相关的依赖(包括 spring-boot-starter-data-jpa、spring-boot-starter-security 和其他 starter)选择对应的版本。<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.7.18</version> <!-- 这里统一版本 --><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>spring-boot-starter-data-jpa 和 spring-boot-starter-security 引入的 spring-boot-starter 版本不依赖于任何一个特定的 starter,而是由 Spring Boot 的 BOM 决定。
版本一致性是由 Spring Boot 的依赖管理(BOM)统一决定的,确保不同 starter 使用的依赖版本一致,避免兼容性问题。

http://www.ppmy.cn/server/133735.html

相关文章

PetaLinux工程的常用命令——petalinux-config

petalinux-config&#xff1a;使用菜单配置项目或指定组件。 注&#xff1a;有些命令我没用过&#xff0c;瞎翻译有可能会翻译错了。 用法: petalinux-config [options] {--component <COMPONENT> |--get-hw-description[SRC]} 可选参数: -h, --help 显示函数用法…

Flutter 学习资料

官网&#xff1a;https://flutter.dev/ # 教程类 a. Flutter官方文档&#xff1a; [https://docs.flutter.dev/get-started](https://docs.flutter.dev/get-started) (中文&#xff1a;文档 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter) 从最初的环境配置到开发…

安卓逆向之- 小程序逆向

PC 调试工具。静态分析工具安卓,ios 所在目录JS 加密VMP引言: 今天讲下逆向中遇到小程序逆向怎么取解决问题。我们有静态分析,动态分析两种方法。 静态分析1.1 小程序文件来源。 PC 不建议,因为是加密后的,还得解密有点麻烦。 说下安卓所在目录: /data/data/com.tencent…

复制文件到U盘提示:对于目标文件系统,文件过大

查看U盘属性的文件系统是否为FAT32&#xff0c;需将其改为NTFS 方法一 Win R 输入cmd打开命令行&#xff0c;输入以下命令&#xff08;注&#xff1a;f为U盘盘符&#xff09; convert f: /fs:ntfs /x方法二 格式化U盘&#xff0c;右键点击U盘进行格式化&#xff0c;文件系…

线性可分支持向量机的原理推导 线性分隔超平面关于任意样本点 (x_i,y_i)的几何间隔 公式解析

本文是将文章《线性可分支持向量机的原理推导》中的公式单独拿出来做一个详细的解析&#xff0c;便于初学者更好的理解。 公式 9-3 进一步明确了如何计算分类间隔的大小&#xff0c;公式形式如下&#xff1a; d i y i w T x i b ∥ w ∥ d_i y_i \frac{\mathbf{w}^T \mathb…

CDGA|数据治理:如何让传统行业实现数据智能

在当今这个数字化时代&#xff0c;数据已成为推动各行各业转型升级的关键力量。对于传统行业而言&#xff0c;如何从海量、复杂的数据中挖掘价值&#xff0c;实现“数据智能”&#xff0c;成为了提升竞争力、优化运营效率、创新业务模式的重要途径。本文将探讨数据治理如何助力…

RHCE的学习(3)

第三章 远程登录服务 简介 概念 远程连接服务器通过文字或图形接口方式来远程登录系统&#xff0c;让你在远程终端前登录linux主机以取得可操作主机接口&#xff08;shell&#xff09;&#xff0c;而登录后的操作感觉就像是坐在系统前面一样 功能: 分享主机的运算能力 服务…

【Hadoop】HDFS基本操作

参考&#xff1a;3.HDFS基本操作_哔哩哔哩_bilibili 创建目录 hadoop fs -mkdir -p /training/qiang查看当前根目录下文件 hadoop fs -ls /hadoop fs -ls /training/目录授权 hadoop fs -chmod -R 777 /training/qm777是最大权限&#xff0c;读写 4、2、1 上传文件 先创…