《零散知识点 · SpringBoot Starter》

server/2024/10/18 12:30:14/

📢 大家好,我是 【战神刘玉栋】,有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.ppmy.cn/server/93292.html

相关文章

Halcon 引擎方式调试

1.C# 端添加代码 启动调试模式 public HDevEngine MyEngine new HDevEngine(); // halcon引擎;// 启动调试服务 MyEngine.StartDebugServer();2.Halcon程序添加到进程 打开Halcon程序 【执行】>【附加到进程】 点击【确定】 3.C# 程序执行到相关位置 C# 程序执行调用…

写代码对人的影响

1 代码是需要跑起来的,不能你写了一段代码运行不了 2 代码过程中有大量的bug,经常异常报错,你需要花费时间去解决 对人的影响就是解决问题的态度得到强化,解决问题要比坚持正确困难,坚持正确只是需要自然而然的努力&…

使用Nginx Proxy Manager配置Halo的反向代理和申请 SSL 证书

本文介绍Nginx Proxy Manager配置Halo的反向代理和申请 SSL 证书,如需要了解Halo 2的安装,参考 如何在Linux云服务器上通过Docker Compose部署安装Halo,搭建个人博客网站?。 文章目录 安装Nginx Proxy ManagerNginx Proxy Manager…

Git原理与用法系统总结

目录 Reference前言版本控制系统Git的诞生配置Git配置用户名和邮件配置颜色配置.gitignore文件 Git的基础用法初始化仓库克隆现有的仓库添加暂存文件提交变动到仓库比较变动查看日志Git回退Git重置暂存区 Git版本管理重新提交取消暂存撤销对文件的修改 Git分支Git分支的优势Git…

蓝桥杯 2024 年第十五届省赛真题 —— 最大异或结点

目录 1. 最大异或结点1. 问题描述2. 输入格式3. 输出格式4. 样例输入5. 样例输出6. 样例说明7. 评测用例规模与约定 2. 解题思路1. 解题思路2. AC_Code 1. 最大异或结点 1. 问题描述 小蓝有一棵树,树中包含 N N N 个结点,编号为 0 , 1 , 2 , ⋯ , N − 1 0,1,2,…

谷粒商城实战笔记-71-商品服务-API-属性分组-前端组件抽取父子组件交互

文章目录 一,一次性创建所有的菜单二,开发属性分组界面1,左侧三级分类树形组件2,右侧分组列表3,左右两部分通信3.1 子组件发送数据3.2,父组件接收数据 Vue的父子组件通信父组件向子组件传递数据子组件向父组…

PHP反序列化漏洞从入门到深入8k图文介绍,以及phar伪协议的利用

文章参考:w肝了两天!PHP反序列化漏洞从入门到深入8k图文介绍,以及phar伪协议的利用 前言 本文内容主要分为三个部分:原理详解、漏洞练习和防御方法。这是一篇针对PHP反序列化入门者的手把手教学文章,特别适合刚接触PH…