Spingboot 之spring-boot-starter-parent与spring-boot-dependencies区分

在创建spring boot工程时,spring-boot-starter-parent 和 spring-boot-dependencies是二选一的关系,在pom中引入其中一个就可以了。

那么什么时候用spring-boot-starter-parent 和 spring-boot-dependencies呢?从字面名称上看,如果我们要通过继承的方式引入springboot框架,那么我们使用spring-boot-starter-parent ,如果想通过依赖的方式引入springboot框架,则我们使用spring-boot-dependencies。

下面给出我们常见的作法:

spring-boot-starter-parent方式

我们需要在 parent 标签里引入spring-boot-starter-parent,然后在dependencies标签里选择需要的具体依赖

<?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>org.example</groupId><artifactId>boot-test</artifactId><version>1.0-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version></parent><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>
spring-boot-dependencies

我们需要在 dependencyManagement 标签里引入spring-boot-dependencies,然后在dependencies标签里选择需要的具体依赖,如下:

<?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>org.example</groupId><artifactId>boot-test</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><dependencyManagement><dependencies><!-- SpringBoot的依赖配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.3.12.RELEASE</version><type>pom</type><scope>import</scope><optional>true</optional></dependency></dependencies></dependencyManagement>
</project>

以上是我们常规的方法,其实我试了下把 spring-boot-dependencies 作为parent方式即第一种方式,项目也是可以启动成功的

<?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>org.example</groupId><artifactId>boot-test</artifactId><version>1.0-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.3.12.RELEASE</version></parent><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>

这种方式不是推荐的方式,因为springboot框架已经很贴心的给我们区分了两个概念;
如果需要通过parent方式的话,就是用spring-boot-starter-parent,如果需要通过依赖的方式引入则使用spring-boot-dependencies

两者关系

我们点开spring-boot-starter-parent的pom内容,如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.3.12.RELEASE</version></parent><artifactId>spring-boot-starter-parent</artifactId><packaging>pom</packaging><name>spring-boot-starter-parent</name><description>Parent pom providing dependency and plugin management for applications built with Maven</description><properties><java.version>1.8</java.version><resource.delimiter>@</resource.delimiter><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding></properties>...</project>

很清晰的看到spring-boot-starter-parent是以spring-boot-dependencies为parent的,只是加了一些maven build的插件而已,所以两者内容虽然不能说很相似,但可以说是完全一样。

按照潜规则:想用继承方式我们就用spring-boot-starter-parent,如果想通过依赖方式引入的话就用spring-boot-dependencies

spring-boot-dependencies依赖原理

点开 spring-boot-dependencies,里面大部分是各种starter,即各种独立功能自动装配的依赖;
大家看下这个图就明白了:

在这里插入图片描述
1、spring-boot-dependencies通过dependencyManagement管理各种starter
2、spring-boot-starter-parent通过parent依赖引入spring-boot-dependencies

starter命名规则可以看我另一篇文章:https://blog.csdn.net/Aqu415/article/details/115875840

over~~

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

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

相关文章

履带吊,笔记

0.前言 履带吊使用了与传统的门桥式起重机不同的技术路线。因为它是移动式设备&#xff0c;所以它的动力是燃油发动机。为了精确调控升降。它的整套动力系统似乎采用了某种液压传动系统。履带吊国内也有生产商。但是下文中&#xff0c;还是从国外的一款产品说起。这款产品的pd…

JDK7与JDK8中HashMap的区别

学习了HashMap JDK7和JDK8中的实现&#xff0c;现在让我们来总结下两者的区别. JDK7 HashMap // 数据结构 - 基于数组链表。 - 元素存储在 Entry 对象中&#xff0c;使用链表解决哈希冲突 // 扩容条件&#xff1a; - 在数组长度达到阈值且当前位置不为空时触发扩容。 // 扩容…

【无标题】Vue3想在scss中想使用动态的变量

Vue3想在css中想使用动态的变量 首先在组件中定义 :style"{ --custom-style-color: customStyle.color }",customStyle.color就是那个传过来的变量&#xff0c;也可以是自定义的-color 值 const props defineProps({customStyle: {type: Object,default: () >…

java面试题-Dubbo和openFeign怎么选择,优劣

远离八股文&#xff0c;面试大白话&#xff0c;通俗且易懂 看完后试着用自己的话复述出来。有问题请指出&#xff0c;有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来&#xff0c;大家一起解决。 java面试题汇总-目录-持续更新中 面试官&#xff1a;你在…

台灯护眼灯怎么挑选?考公必备护眼台灯推荐

台灯作为日常生活中比较常用的桌面照明工具&#xff0c;不管是上班族熬夜加班&#xff0c;还是学生党用于学习、备考都离不开它的身影。但是如何挑选一盏光源舒适的台灯&#xff0c;相信是很多小伙伴最为烦恼的一个问题&#xff01;如果使用了一款质量不好&#xff0c;光源不达…

[数据结构]线性表1 C++编程作业

链表三插法详解&#xff1a; 链表的三种插入方法&#xff08;头插法&#xff0c;尾插法&#xff0c;任意位置插入&#xff09;_链表插入_夜路难行々的博客-CSDN博客 1使用头插法创建链表 #include <iostream> using namespace std;typedef struct Lnode{int data;stru…

排序:直接插入排序希尔排序

目录 排序&#xff1a; 概念&#xff1a; 直接插入排序&#xff1a; 代码的实现&#xff1a; 代码解析&#xff1a; 总结&#xff1a; 希尔排序&#xff1a; 代码实现&#xff1a; 预排序&#xff1a; 代码优化&#xff1a; gap 的 本质 &#xff1a; 直接…

【每日一题】最小化旅行的价格总和

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;深搜动态规划 写在最后 Tag 【深搜动态规划】【树】【2023-12-06】 题目来源 2646. 最小化旅行的价格总和 题目解读 有一棵无向、无根的树&#xff0c;树中的节点从 0 到 n-1&#xff0c;每个节点有一个关联的价格&a…

这款IDEA插件真的爱了

前言 Idea 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展&#xff0c;可以根据开发人员的需要进行定制和扩展&#xff0c;从而提高开发效率,今天我们就来介绍一款…

基于Java SSM毕业设计管理子系统

学校有若干系&#xff0c;每个系有若干专业&#xff0c;需要通过一个毕业设计管理子系统对毕业设计隋况进行管理。系统主要功能如下&#xff1a; 登记毕业设计题目&#xff0c;包括&#xff1a;编号、题目、类型、指导老师等。 老师信息包括&#xff1a;工号、姓名、性别、职称…

基于c++版本的数据结构改-python栈和队列思维总结

##栈部分-&#xff08;叠猫猫&#xff09; ##抽象数据类型栈的定义&#xff1a;是一种遵循先入后出的逻辑的线性数据结构。 换种方式去理解这种数据结构如果我们在一摞盘子中取到下面的盘子&#xff0c;我们首先要把最上面的盘子依次拿走&#xff0c;才可以继续拿下面的盘子&…

Java开源工具库Guava使用指南详解

Guava是Google开发的一套Java核心库&#xff0c;它提供了很多实用的工具类和方法&#xff0c;能够简化Java开发者的日常工作。下面是一些Guava的使用指南&#xff1a; 导入Guava库 在使用Guava之前&#xff0c;需要先将Guava库导入到项目中。可以在Maven或Gradle中添加以下依…

Postman可以卸载了!这款IDEA插件太好用了!

Postman是大家最常用的API调试工具&#xff0c;那么有没有一种方法可以不用手动写入接口到Postman&#xff0c;即可进行接口调试操作&#xff1f;今天给大家推荐一款IDEA插件&#xff1a;Apipost Helper&#xff0c;写完代码就可以调试接口并一键生成接口文档&#xff01;而且还…

JIRA 禁用用户自动登录

概述 当用户登录 JIRA 时&#xff0c;他们可以通过在单击“Log In”按钮之前选中“Remember my login”复选框&#xff0c;让 JIRA 记住他们的登录信息。这样做之后&#xff0c;“Remember my login”令牌将由 JIRA 服务器存储&#xff0c;并且系统会在用户的浏览器中设置包含…

智能优化算法应用:基于学生心理学算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于学生心理学算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于学生心理学算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.学生心理学算法4.实验参数设定5.算法结果…

gitLab创建新项目

1.进入git2.选择创建项目3.勾选生成readme.md文件4.邀请成员

设L为带头结点的单链表,编写算法实现从尾到头反向输出每个结点的值。

题目描述&#xff1a;设L为带头结点的单链表&#xff0c;编写算法实现从尾到头反向输出每个结点的值。 分析&#xff1a; 从尾到头反向输出可以考虑使用头插法。 void Reverse(LinkList L) {LNode *p L->next; // 指针 p 指向链表的第一个结点LNode *r; // 临…

C //例10.1 从键盘输入一些字符,逐个把它们送到磁盘上去,直到用户输入一个“#”为止。

C程序设计 &#xff08;第四版&#xff09; 谭浩强 例10.1 例10.1 从键盘输入一些字符&#xff0c;逐个把它们送到磁盘上去&#xff0c;直到用户输入一个“#”为止。 IDE工具&#xff1a;VS2010 Note: 使用不同的IDE工具可能有部分差异。 代码块 方法&#xff1a;使用指针&…

第一篇:MongoDB的安装、启动、关闭、链接shell

目录 简介 安装 安装遇到的问题 查看brew 当前使用的源&#xff1a; 更换brew 源。更换成清华大学镜像源 版本查看 MongoDB 数据目录与日志目录 启动方式一&#xff1a; 启动MongoDB 验证MongoDB 是否正常运行 停止或重新启动 停止MongoDB 服务 重新启动MongoDB服…

身为 Go 程序员,我为啥更喜欢用 Zig?

Zig 是一种比较新的编程语言&#xff0c;于 2016 年首次推出。Zig 社区将其描述为“一种用于维护稳固的、可优化和可重用软件的通用编程语言”。 看似一句简单的描述&#xff0c;却隐藏着远大的抱负。Zig被看作是可与C语言一较高下的编程语言。此外&#xff0c;Zig 也是一个编…