依赖管理与Springboot Starters

依赖管理与Spring Boot Starters

在现代软件开发过程中,依赖管理是一项至关重要的任务。随着应用程序规模的扩大,引入的依赖项数量也会增加,使得版本冲突和类路径问题成为常见的挑战。为了应对这些挑战,Spring Boot提供了一套简化依赖管理的策略,特别是通过使用Starters来简化项目的初始搭建。本文将深入探讨Spring Boot的自动配置和Starters的概念,展示如何使用和自定义Starters来满足项目需求,并讨论如何有效管理项目依赖关系。我们将通过具体代码示例和配置步骤,确保读者能够获得实操经验。

1. Spring Boot的自动配置与Starters概念

1.1 自动配置

Spring Boot的自动配置是其核心特性之一,它允许开发者减少繁琐的配置工作。自动配置的工作原理很简单:基于项目中的类路径下的jar文件,Spring Boot会自动配置必要的Bean。例如,当spring-boot-starter-data-jpa被添加到项目中时,它不仅提供了JPA的实现(如Hibernate),还会自动配置一个DataSource、EntityManagerFactory、TransactionManager等。

1.2 Starters概念

Starters是Spring Boot用来简化Maven依赖管理的工具。每个Starter都是一个Maven项目对象模型(POM),它为特定功能的实现提供了一组预先定义的依赖项。这意味着开发者无需手动查找和配置每一个具体的库,只需引入对应的Starter即可开始开发特定的应用类型,比如Web应用、批处理应用或者集成消息传递的应用等。

2. 使用Starters

2.1 添加Starters

要使用Starters,首先需要在项目的build.gradlepom.xml文件中添加对应的依赖。以构建一个基本的Web应用为例,你需要添加以下依赖:

dependencies {implementation 'org.springframework.boot:spring-boot-starter-web'
}

这个依赖将引入所有构建Web应用所需的依赖项,包括Tomcat作为默认的嵌入式容器以及Spring MVC用于模型视图控制器架构的支持。

2.2 自动配置演示

一旦引入了上述依赖,Spring Boot将自动进行配置。例如,它会注册一个TomcatEmbeddedServletContainerFactory,使应用程序能够在8080端口上运行。你可以通过运行Spring Boot应用来验证这一点,无需任何额外的Servlet配置。

3. 自定义Starters

尽管Starters提供了许多开箱即用的配置,但有时我们可能需要对其进行自定义以满足特定的业务需求。这可以通过以下方式完成:

3.1 排除特定依赖

如果Starter包含了你不需要的依赖,可以使用排除功能将其排除。例如,假设你想使用HikariCP作为数据库连接池而不是Spring Boot默认的HikariCP,你可以这样配置:

dependencies {implementation('org.springframework.boot:spring-boot-starter-data-jpa') {exclude group: 'com.zaxxer', module: 'HikariCP'}
}

然后,你可以添加HikariCP的依赖以使用它作为连接池。

3.2 自定义配置

除了排除某些依赖外,你还可以通过提供自定义的配置属性来修改Starter的行为。这些属性可以在application.propertiesapplication.yml文件中设置。例如,如果你想改变数据库的URL,可以添加如下属性:

spring.datasource.url=jdbc:mysql://localhost/testdb?useSSL=false&serverTimezone=UTC

4. 依赖管理

Spring Boot提供了一个特殊的模块,spring-boot-dependencies,它是一个传递性依赖,用于管理项目的所有依赖版本。通过引入此模块,你可以确保项目中所有可能的依赖都使用兼容的版本,从而避免版本冲突。

要在项目中使用spring-boot-dependencies,你需要在你的build.gradle文件中添加以下内容:

dependencyManagement {imports {mavenBom "org.springframework.boot:spring-boot-dependencies:2.3.4.RELEASE"}
}

这段代码告诉Gradle去下载并使用Spring Boot提供的Bill of Materials (BOM)文件,该文件定义了所有受支持依赖项的版本。这样做的一个好处是,你只需要定义一次版本号,而无需为每个依赖项单独定义。

通过以上步骤和配置,你可以充分利用Spring Boot Starters来简化依赖管理和项目设置。这不仅提高了开发效率,还有助于维护应用程序的稳定性和兼容性。希望这篇详细的指南能帮助你在未来的项目中更好地利用Spring Boot的强大功能。

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

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

相关文章

【OpenCV 基础知识 11】计算通道像素值和

cvSplit()函数将复制src的各个通道到图像dst0,dst1,dst2和dst3中。如果源图像少于4个通道的情况下,那么传递给cvSplit()的不必要的目标参数可设置为NULL program cv_Sum;{$APPTYPE CONSOLE} {$R *.res}usesSystem.SysUtils,ocv.highgui_c,oc…

前端基于word模板导出word文档

项目环境 vue2 js vue-cli等 依赖包都可以在npm官网找到对应文档 npm官网(英文) 1、依赖 安装依赖 docxtemplater npm i docxtemplaterfile-saver npm i file-saverjszip-utils npm i jszip-utilsjszip npm i jszip在对应页面或模块中引入依赖 import Docxtemplater …

QQ个性网空间日志网站模板源码

QQ个性网空间日志网站模板源码自带后台登录设置,适用于博客、文章、资讯、其他类网站内容使用。模板自带eyoucms内核,原创设计、手工书写DIVCSS,完美兼容IE7、Firefox、Chrome、360浏览器等;主流浏览器;结构容易优化;多终端均可正常预览。由于…

力扣刷题---2206. 将数组划分成相等数对【简单】

题目描述🍗 给你一个整数数组 nums ,它包含 2 * n 个整数。 你需要将 nums 划分成 n 个数对,满足: 每个元素 只属于一个 数对。 同一数对中的元素 相等 。 如果可以将 nums 划分成 n 个数对,请你返回 true &#xf…

react 低代码平台方案汇总

React作为当前最流行的前端框架之一,其生态系统中孕育了多种低代码平台方案,旨在加速应用开发过程。以下是几款基于React的低代码平台或工具,它们通过可视化构建、预制组件、数据绑定等功能,帮助开发者快速构建应用程序&#xff1…

【Tools】SpringBoot工程下的全局异常处理

Catalog SpringBoot工程下的全局异常处理一、需求二、实现 SpringBoot工程下的全局异常处理 一、需求 程序运行过程中没法保证一定不会出错,即程序中会报异常,而系统默认的异常信息的格式往往和我们自定义返回的消息格式不一致,还会影响返回…

力扣刷题---3146. 两个字符串的排列差

题目描述 给你两个字符串 s 和 t,每个字符串中的字符都不重复,且 t 是 s 的一个排列。 排列差 定义为 s 和 t 中每个字符在两个字符串中位置的绝对差值之和。 返回 s 和 t 之间的 排列差 。 示例 1: 输入:s “abc”, t “b…

AcWing 154. 滑动窗口——算法基础课题解

AcWing 154. 滑动窗口 题目描述 给定一个大小为 n≤10^6 的数组。 有一个大小为 𝑘 的滑动窗口,它从数组的最左边移动到最右边。 你只能在窗口中看到 𝑘 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子: 该数组为…

运用HTML、CSS设计Web网页——“西式甜品网”图例及代码

目录 一、效果展示图 二、设计分析 1.整体效果分析 2.头部header模块效果分析 3.导航及banner模块效果分析 4.分类classify模块效果分析 5.产品展示show模块效果分析 6.版权banquan模块效果分析 三、HTML、CSS代码分模块展示 1. 头部header模块代码 2.导航及bann…

【SpringCloud】Spring Cloud基本介绍

目录 回顾架构分类单体架构分布式架构微服务架构什么是微服务优点缺点微服务的架构特征:微服务架构面临的挑战技术挑战微服架构的设计原则微服务概念提供者(Provider)消费者(Consumer)RPC和Restful集群分布式 总结 服务拆分和远程调用服务拆分原则服务拆分示例 思考…

docker和docker-compose安装

1.安装docker 安装所需的软件包 sudo yum install -y yum-utils device-mapper-persistent-data lvm2#设置阿里源 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo更新软件包索引 sudo yum makecache fast查询可安装…

力扣爆刷第143天之二叉树五连刷(二叉搜索树)

力扣爆刷第143天之二叉树五连刷(二叉搜索树) 文章目录 力扣爆刷第143天之二叉树五连刷(二叉搜索树)一、530. 二叉搜索树的最小绝对差二、501. 二叉搜索树中的众数三、236. 二叉树的最近公共祖先四、235. 二叉搜索树的最近公共祖先…

http项目改为/支持https的方案、无需修改后台代码

背景描述:原来的项目前后台都是http,现在某个服务要求前台必须使用https; 方案1:前台部署在https里,后面代码修改;但是微服务架构,后台工作量太大; 方案2:前台部署在ht…

Pytorch-08 实战:手写数字识别

手写数字识别项目在机器学习中经常被用作入门练习,因为它相对简单,但又涵盖了许多基本的概念。这个项目可以视为机器学习中的 “Hello World”,因为它涉及到数据收集、特征提取、模型选择、训练和评估等机器学习中的基本步骤,所以…

vue 打印、自定义打印、页面打印、隐藏页眉页脚

花了一天时间搞了个打印功能,现则将整体实现过程进行整理分享。先来看看效果图: 1、页面展示为: 2、重组页面打印格式为:这里重组页面的原因是客户要求为一行两列打印 !内容过于多的行则独占一行显示完整。 整体实现&…

区块链论文总结速读--CCF A会议 USENIX Security 2024 共7篇 附pdf下载

Conference:33rd USENIX Security Symposium CCF level:CCF A Categories:网络与信息安全 Year:2024 Num:7 1 Title: Practical Security Analysis of Zero-Knowledge Proof Circuits 零知识证明电路的实用安全…

hbase版本从1.2升级到2.1 spark读取hive数据写入hbase 批量写入类不存在问题

在hbase1.2版本中&#xff0c;pom.xml中引入hbase-server1.2…0和hbase-client1.2.0就已经可以有如下图的类。但是在hbase2.1.0版本中增加这两个不行。hbase-server2.1.0中没有mapred包&#xff0c;同时mapreduce下就2个类。版本已经不支持。 <dependency><groupId>…

安全访问python字典:避免空键错误的艺术

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、直接访问字典键的问题 三、使用get方法安全访问字典键 四、get方法的实际应…

Could not create connection to database server的错误原因

1、使用MyBatis 连接数据库报错 org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. ### The error may …

流量卡激活先交100块钱,这个确定不是套路吗?

很多第一次申请流量卡的时候&#xff0c;在激活的时候都会问的一个问题&#xff0c;为什么激活时都要先交100块钱&#xff0c;这个确定不是套路吗 ​  先说一下&#xff0c;首充其实并不是商家的要求&#xff0c;准确来说是运营商的要求&#xff0c;目前运营商推出的线上流量…