SpringBoot中依赖管理与自动版本仲裁机制

简介: SpringBoot中依赖管理与自动版本仲裁机制

当我们做web开发当时候,在SpringBoot中为什么只需要导入一个依赖,所有的与web开发相关的包就会全部导入进来呢?
导入web开发的依赖:

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

web开发相关的包全部都进来了:
在这里插入图片描述
在我们开发过程中无需担心任何导包问题,我们就可以直接使用了,那为什么会这样呢?

依赖管理

1.父项目

首先我们看他的父项目,每一个SpringBoot工程他都有这么一个父项目内容
例如:

    <!--父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.1</version>
    </parent>

这个父项目它的作用是一般是来做依赖管理,父项目中可能会声明非常多的依赖,子项目只要基础了父项目,子项目以后写依赖就不需要版本号了,所有我们可以看到我的这个项目基础了父项目(版本号2.4.1)之后,我们之后引入其他依赖,我们都没有写版本号,如下:


    <!--父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.1</version>
    </parent>

    <!--web插件-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>


    <!--简化部署,把项目打成jar包,直接在目标服务器执行即可。-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

所以父项目是用来做依赖管理的。

2.自动版本仲裁机制

在这里插入图片描述

我们点进父项目查看其内容,内容如下:
在这里插入图片描述

发现呢它还有一个父项目,我们继续点进去查看其内容,部分截图如下:

在这里插入图片描述

在这里插入图片描述

可以看到里面声明了我们开发过程中需要用到的所有常用jar包的版本号和依赖,也就是说我们在spring-boot-dependencies里面声明了很多jar包的版本号和依赖,所以我们无需写版本号,这就是自动版本仲裁机制。

3.如何不使用版本仲裁机制所提供的版本号

在这里插入图片描述

比如我们不想使用默认提供的mysql驱动的版本号8.0.22,想用版本号为5.1.47的mysql,那我们应该怎么办呢?
有两个解决方案,其实都是利用maven提供的特性,就近优先原则,如下:

a.使用<properties>

在这里插入图片描述
之后我们可以看到mysql驱动已经导入其版本号为5.1.47,截图如下:
在这里插入图片描述

b.直接在导入依赖的时候直接加上版本号

在这里插入图片描述
这两种方法其实都是利用maven提供的特性,就近优先原则,就是在当前项目中已经配置了某个依赖的版本号我就使用其版本号,如果当前项目中没有配置其版本号,我就去其父项目中找其版本号。

目录
相关文章
|
28天前
|
druid Java Maven
|
1月前
|
架构师 Java 开发者
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
在40岁老架构师尼恩的读者交流群中,近期多位读者成功获得了知名互联网企业的面试机会,如得物、阿里、滴滴等。然而,面对“Spring Boot自动装配机制”等核心面试题,部分读者因准备不足而未能顺利通过。为此,尼恩团队将系统化梳理和总结这一主题,帮助大家全面提升技术水平,让面试官“爱到不能自已”。
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
|
1月前
|
Java Maven Spring
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
这篇文章介绍了在IntelliJ IDEA社区版中创建Spring Boot项目的三种方法,特别强调了第三种方法的详细步骤。
294 0
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
|
1月前
|
Java Maven Spring
查看springboot版本支持最高的java版本
截至最近更新,Spring Boot 3.0及以上版本支持的最高Java版本为Java 17。鉴于技术的不断演进,建议直接参考Spring Boot的官方文档获取最准确的支持信息,因为这些版本兼容性可能会随着新版本的发布而有所变化。选择与你的Spring Boot版本相匹配的Java版本,可以确保充分利用框架特性,同时保证项目的稳定性和前瞻性。
46 0
|
1月前
|
自然语言处理 搜索推荐 Java
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(一)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图
50 0
|
1月前
|
存储 自然语言处理 搜索推荐
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
34 0
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
145 1
|
19天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
95 62
|
17天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
35 2
|
19天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。