《零散知识点 · SpringBoot Starter》

news2024/12/25 0:58:37

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍

文章目录

    • 写在前面的话
    • 正文内容
      • 技术简介
      • 命名补充
      • 利弊分析

CSDN.gif

写在前面的话

此篇博文简单介绍一下 SpringBoot 的 Starter 机制,仅供学习参考。


正文内容

技术简介

Spring Boot 为我们提供了简化企业级开发绝大多数场景的 starter pom,只要引入了相关依赖,就会采用自动配置并提供相关Bean,方便得集成和使用。
例如:Spring官方提供的:spring-boot-starter-web、spring-boot-starter-test。
Spring Boot Starter 也提供了规范可以让开发者提供自己的 starter,开发者通过添加 spring-boot-starter-* 这样的依赖就能支持具体的某个功能,更完整的功能列表可以查看:官网介绍

Tips:若是其他开源项目或公司提供的,是叫 xxx-spring-boot-starter,例如:mybatis-spring-boot-starter,这些还是需要额外一些配置的。


命名补充

spring-boot-starter-*:这是官方定义的starter,其中 *就代表某种场景。
*-spring-boot-starter: 这是规定第三方开发的 starter 的命名。
只要引入starter,这个场景的所有常规需要的依赖我们都自动引入。
所有场景启动器最底层的依赖是:spring-boot-starter

Tips:其实就是基于 Maven 的依赖传递,但是这个思想日常架构设计都需要。


利弊分析

通过对 SpringBoot 的学习,充分体验了自动化配置为我们带来的超便利开发方式,但是,在一些情况下 SpringBoot 的自动化配置也会给我们惹来不少的麻烦。
比如这些场景:项目依赖复杂的情况下,由于依赖方的依赖组织不够严格,可能引入了一些实际我们不需要的依赖,从而导致我们的项目满足一些特定的自动化配置。特别是,传统 Spring 项目转换为 Spring Boot 项目的过程中,由于不同的组织方式问题,引发自动化配置加载的错误,比如:通过xml手工组织的多数据源配置等。上面这些原因都会导致不必要的自动化配置加载而导致应用无法启动或触发/health的健康检查不通过等问题。
其实就是当项目引入一些jar之后,自动会初始化这部分功能,如果你没有相对的配置,可能会报错,这很常见了。
解决办法:
1、通过外部依赖的修改来解决:通过与依赖方沟通,在对方提供的API依赖中去掉不必要的依赖(有时候不切实际);
2、通过禁用指定的自动化配置来避免加载不必要的自动化配置,例如:@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

CSDN_END.gif

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

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

相关文章

开放式耳机音质上不如入耳式耳机?高性价比开放式耳机推荐大赏

这可不一定! 开放式耳机在音质上并不一定就比传统的入耳式耳机差。 首先,音质的好坏不能仅仅根据耳机的类型来判断。开放式耳机在声音的开放性和自然度方面往往具有优势。它们能够提供更宽广的音场,让声音有一种自然扩散的感觉,使…

『 Linux 』线程同步问题与条件变量

文章目录 同步问题条件变量条件变量的使用条件变量的条件检查与线程唤醒生产者-消费者模型 同步问题 同步问题是保证数据安全的情况下,使多线程在访问同一资源时具有一定顺序性; #define NUM 5int g_val 700;class threadData {public:threadData(const int number, pthread_…

linux常使用的命令

关机命令 shutdown halt poweroff reboot grep 选项 参数 -l 显示所有包含关键字的文件名 -n 在匹配之前加上行号 -c 只显示匹配的行数 -v 显示不匹配的行 管道符 “|” 左边的输出作为右边的输入 例如:我们找个文件包含abc 但是不含有def的文件 grep …

Adobe Acrobat DC 2021版安装教程【超简单、超详细】

Adobe Acrobat DC 是 Adobe 提供的一款专业 PDF 解决方案,具有许多强大的功能,可以满足各种文档处理需求。 注意事项:①下载与激活过程中一定要关闭杀毒软件 ②提供的所有软件都是永久版的 ③软件仅供学习下载使用,不可用于商业用…

C++ 右值 左值引用

一.什么是左值引用 右值引用 1.左值引用 左值是一个表示数据的表达式(如变量名或解引用的指针),我们可以获取它的地址可以对它赋值。定义时const修饰符后的左值,不能给他赋值,但是可以取它的地址。左值引用就是给左值的引用,给左…

环境如何搭建部署Nacos

这里我使用的是Centos7, Nacos 依赖 Java环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用 ## 1、下载安装JDK wget https://download.oracle.com/java/17/latest/jdk-17_linux-x6…

知识文库杂志知识文库杂志社知识文库编辑部2024年第12期目录

文艺理论 现代高校书院对中国传统书院学术精神的汲取与转化 李奥楠;时新洁; 1-4 个案工作介入高中美术艺考生及家长心理调适的应用研究 魏星; 5-8《知识文库》投稿:cn7kantougao163.com 中华优秀传统文化视角下高校美育课程实践教学 李丛丛; 9-12 基…

Pytorch GPU环境搭建-博客导航

这里写目录标题 安装安装VS(CUDA需要VS)安装CUDA安装CUDNN创建Pytorch GPU虚拟环境 测试疑难杂症解决链接搭建VGG分类网络并用CUDA训练使用CUDA加速推理分类网络C#使用ONNXruntime-gpu推理 安装 安装VS(CUDA需要VS) 2017,2019,2022都可 安装CUDA Cud…

山东润馨教育专家团队多次举办各种扶贫及公益讲座

一、山东润馨教育专家鲁书婉老师举办了以“发掘孩子的天赋潜能”为主题的公益讲座 在这个充满温情与希望的春日,3月16日,山东润馨教育专家团队带着满满的爱心与智慧,踏入了德州学院附属第一实验小学联合滨河社区,成功举办了一场以…

如何恢复硬盘里删除的数据?硬盘数据恢复真的可靠吗?2024最新解答!

在日常的计算机使用中,我们时常会不小心删除硬盘中的重要数据,这时候,数据恢复就显得尤为重要。本文将介绍几种恢复硬盘里删除数据的方法,并探讨硬盘数据恢复的可靠性,提供2024年的最新解答。 一、什么是电脑硬盘&…

【Linux】进程创建进程终止进程等待

目录 一、进程创建1.1 写时拷贝1.2 frok的常规用法1.3 fork调用失败的原因 二、进程终止2.1 进程退出码2.2 进程退出方式2.2.1 exit函数的使用2.2.2 _exit函数的使用2.2.3 exit函数与_exit函数的区别 2.3 进程信号 三、进程等待3.1 进程等待的必要性3.2 进程等待的方式3.2.1 wa…

从零开始的MicroPython(一) 软件安装及环境搭建

文章目录 MicroPython简介下载安装 ESP32(NodeMCU-32S)简介引脚注意事项 CH340下载安装 Thonny IDE下载 Python简介下载环境配置 MicroPython 简介 ​ MicroPython 是 Python 3 编程语言的精简高效的实现 其中包括 Python 标准库的一小部分,并且是经过优化&#x…

达梦数据库系列—40.执行计划

目录 优化器 执行计划 操作符 执行过程 优化器 查询优化器通过分析可用的执行方式和查询所涉及的对象统计信息来生成最优的执行计划。此外,如果存在 HINT 优化提示,优化器还需要考虑优化提示的因素。 查询优化器的处理过程包括: 1.优化…

手摸手教你撕碎西门子S7通讯协议14--开发自己的通讯库读数据

1、S7通讯回顾 - (1)建立TCP连接 Socket.Connect- - (2)发送访问请求 COTP- - (3)交换通信信息 Setup Communication- - (4)执行相关操作 读、写、PLC启停、时间…

【Android】DrawerLayout+NavigationView实现侧滑菜单页面

【Android】DrawerLayoutNavigationView实现侧滑菜单页面 在 Android 开发中,侧滑菜单是一个非常常见的用户界面模式,它能够在屏幕的一侧显示一个导航菜单,允许用户通过滑动手势或点击按钮来访问不同的应用功能。本文将介绍如何使用 DrawerL…

网页UI设计工具全攻略:九大精选

如果担心不知道如何进行网站 UI 设计、设计网站和编辑网页技术程序,很多人会选择快速方便的 Wix 建设。然而,如果你想建立一个最合适的网站,使用一个功能强大、资源丰富的网站 UI 设计工具仍然是您的最佳选择。网站设计中的 UI 设计不同于一般…

你是否知道Vue的data两种不同定义区别呢?

在做vue项目的时候,虽然vue3出来了一段时间了,vue2已经官方宣布不再维护了,然而我们有些旧项目原来是用的vue2的,那么用了那么久的vue2,不知道你是否有注意到,vue2我们往往会在根文件定义了一个对象形式的d…

类似redmine的项目管理系统有哪些?10款软件测评

国内外主流的10款类似redmine项目管理系统对比:PingCode、Worktile、TAPD、OpenProj、禅道(ZenTao)、Teambition、JIRA、Asana、Basecamp、Wrike。 在项目管理领域,选择一个既能满足需求又易于操作的工具是每个团队都面临的挑战。…

利用SOLIDWORKS CAD 2024新功能 提高团队工作效率

随着科技的不断发展,CAD(计算机辅助设计)软件在各行业中的应用越来越广泛,尤其在机械、汽车、航空航天、电子设备等领域。SOLIDWORKS作为一款功能强大的CAD软件,一直在不断更新和优化,以适应不断变化的市场…