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提供的特性,就近优先原则,就是在当前项目中已经配置了某个依赖的版本号我就使用其版本号,如果当前项目中没有配置其版本号,我就去其父项目中找其版本号。

目录
相关文章
|
10月前
|
XML Java Nacos
Spring Boot 整合Nacos 版本兼容适配 史上最详细文档
本文介绍SpringBoot整合Nacos的完整流程,涵盖Nacos下载安装、配置中心与服务发现集成、版本兼容性问题及实战配置。重点解决SpringBoot 3.3.0与Nacos版本适配难题,推荐使用Spring Cloud Alibaba方案,并提供项目开源地址供参考学习。
|
Java Maven 微服务
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的 maven 依赖
在项目中使用Swagger2工具时,需导入Maven依赖。尽管官方最高版本为2.8.0,但其展示效果不够理想且稳定性欠佳。实际开发中常用2.2.2版本,因其稳定且界面友好。以下是围绕2.2.2版本的Maven依赖配置,包括`springfox-swagger2`和`springfox-swagger-ui`两个模块。
668 0
|
前端开发 JavaScript Java
springboot图书馆管理系统前后端分离版本
springboot图书馆管理系统前后端分离版本
306 12
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
2561 15
|
缓存 Java 应用服务中间件
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——依赖导入和Thymeleaf相关配置
在Spring Boot中使用Thymeleaf模板,需引入依赖`spring-boot-starter-thymeleaf`,并在HTML页面标签中声明`xmlns:th=&quot;http://www.thymeleaf.org&quot;`。此外,Thymeleaf默认开启页面缓存,开发时建议关闭缓存以实时查看更新效果,配置方式为`spring.thymeleaf.cache: false`。这可避免因缓存导致页面未及时刷新的问题。
556 0
|
druid Java Maven
|
架构师 Java 开发者
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
在40岁老架构师尼恩的读者交流群中,近期多位读者成功获得了知名互联网企业的面试机会,如得物、阿里、滴滴等。然而,面对“Spring Boot自动装配机制”等核心面试题,部分读者因准备不足而未能顺利通过。为此,尼恩团队将系统化梳理和总结这一主题,帮助大家全面提升技术水平,让面试官“爱到不能自已”。
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
|
9月前
|
JavaScript Java 关系型数据库
基于springboot的项目管理系统
本文探讨项目管理系统在现代企业中的应用与实现,分析其研究背景、意义及现状,阐述基于SSM、Java、MySQL和Vue等技术构建系统的关键方法,展现其在提升管理效率、协同水平与风险管控方面的价值。