springboot starter(你知道的SpringBoot中常用的starter都有哪些)

:暂无数据 2026-04-14 22:20:02 0
你是否好奇,为什么人人都在谈springboot starter?它和你知道的SpringBoot中常用的starter都有哪些之间究竟存在着怎样微妙的联系?答案就在下文。

本文目录

你知道的SpringBoot中常用的starter都有哪些

1. spring-boot-starter-web :提供 Spring MVC + 嵌入式的 Tomcat 。web开发一整套
2. mybatis-spring-boot-starter :提供 MyBatis持久层操作数据库
3. spring-boot-starter-test:提供完备的测试功能
4. spring-boot-starter-thymeleaf:提供Thymeleaf模板视图整合
5. spring-boot-starter-actuator:提供生产级监控
6. spring-boot-starter-data-jpa :提供 Spring JPA + Hibernate
7. spring-boot-starter-data-redis`:提供 Redis整合能力
8. spring-boot-starter-mail:提供邮件发送给你
如果你对上述常见的starter不了解,我强烈建议你学习一下SpringBoot,去黑马程序员官网视频库看免费视频。

springboot starter的二次封装

1,组件自注入到容器;

2,通过注解方式使用组件功能;

但是starter的使用在很多项目中通常都会配置一些基本相同的功能组件,每次新建项目都是copy一遍。所以比较方便的方式,我们可以封装一下把常用组件放在starter一起。

比如,spring-boot-starter-web通常会带上:

1,内置心跳api,

2,po、dto拷贝

3,统一异常处理,

4,404错误处理,

5,参数验证模块,

6,自定义参数验证数据类型

可能以后还会增加juc功能...

如果这些常用的功能组件都会一起使用,就可以和spring-boot-starter-web封装一起。

自建项目的时候pom只要这一个依赖就够了。

xiaoma-web-starter组件做的时候,pom里加上这些功能的依赖,

心跳api

***隐藏网址***

***隐藏网址***

放到一起:

最后,mvn clean install 就可以了

SpringBoot的Starter机制

我们知道SpringBoot自己在“后台”帮我们配置了很多原本需要我们手动去的东西,至于这个“后台”是啥,就是Starter机制。我们先来看一看常用的Starter启动器,他们都是以spring-boot-starter开头明名的,至于spring-boot这个前缀则被Spring Boot官方保留。

至于Starter机制是如何实现上文说的“自动变速箱”功能,简单说就是通过条件注解来实现的,SpringBoot通过条件注解确定需要加载哪些组件,读取哪些配置,还有一些控制加载顺序的注解。这里我们先来看一些常用的条件注解和控制加载顺序的注解:

这里以一个简单的SpringBoot中的依赖配置文件做说明,只加入最基础的配置。

可以看到有如下几个依赖需要加入:

1)spring-boot-starter-parent,这个是所有SpringBoot工程都需要加入的依赖项,可以说这个是一个“根依赖”,必须要加入,注意这里指定的版本号也会约束其他依赖项,相当于一个最上层的版本配置,这里指定的就是我们常说的SpringBoot的版本。

2)spring-boot-starter-web,这个是Web工程的依赖项,所有的Web程序都要加。

3)spring-boot-configuration-processor,这个是ConfiguaritionProperties的配置,有了它我们的Spring项目中的Jar就会包含上很多meta-data,这些元数据会在开发的时候通过idea给我们很多输入的提示。

可以说这是SpringBoot项目中最重要的配置文件,这里看下关于他的几个核心部分,首先关于它的描述是这样的:

大意是说这个文件是一个提供了通过maven编译的应用的依赖和插件管理一个“父配置文件”。嗯,就理解是管理基础依赖和插件的就可以了。

看他的resource标签,是这样的:

这里指定了资源的导入和导出路径,什么意思?就是你的配置文件配在对应的目录下,框架都会去扫描到读取的,按上面的配置会读src/main/resources目录下的配置文件的内容。比如我们在这里放了如下的配置文件:

这样程序启动的会去读application.properties和application.yml文件里面的配置的。这里要说一下,上面的配置加载是有顺序的,先加yml,yaml ,后加properties里面的配置,这也决定了properties文文件配置的优先级是要高于yaml文件的,或者说相同参数的配置,properties里面的参数会覆盖yaml里面的。

最后看到最上面还有一个parent标签,是这样描述的,这里描述了spring-boot-starter-parent的父依赖配置spring-boot-dependencies:

同样的我们看一看spring-boot-dependencies的描述文件,看看里面的properties标签,是这样:

喔,好多似曾相识的面孔在这里都能见到,比如aspectj,caffeine, dom4j,hikaricp,junit,log4j2, mysql,tomcat等等一些,而且你也看到了,这里帮我们把版本控制也做好了,防止了原来在Spring中我们自己手动引入依赖的时候的经常会发生的版本冲突问题,所谓的约定优于配置在这里就是一个典型的体现场景。

这个配置是web应用的核心配置,有了他不用像Spring再像Spring一样去导SpringMVC相关的依赖了,这里看一下这个文件的内容。

同样的也有一个parent标签指定父依赖spring-boot-starters.

另外dependencies标签指定是一些依赖坐标的打包,包含json,tomcat等等,包含版本控制都做好了。

其中spring-boot-starter的依赖又包含了如下的dependencies,有spring-boot,自动配置,日志,注解,core等等的依赖:

以上可以看到SpringBoot基本上通过spring-boot-starter-parent和spring-boot-starter-web两个配置就把起步依赖需要导入的依赖项把我们需要的依赖给导完了,这也就是SpringBoot的starter机制在依赖配置层的最好体现,实现了所谓约定优于配置。

有关springboot starter的更多实践技巧和你知道的SpringBoot中常用的starter都有哪些的高级应用,我们将在后续文章中更新,欢迎保持关注。
本文编辑:admin

更多文章:


linux查看端口的命令(Linux查看端口是否被占用的命令是什么)

linux查看端口的命令(Linux查看端口是否被占用的命令是什么)

前几天,一位朋友问我:linux查看端口的命令到底该怎么学?我只回了他三个字:抓住Linux查看端口是否被占用的命令是什么。今天就来详细说说为什么。

2026年4月15日 01:20

开源在线教育平台源码(交代码的时候源码上边哪部分能用)

开源在线教育平台源码(交代码的时候源码上边哪部分能用)

结合最近的趋势来看,开源在线教育平台源码的热度持续攀升,而交代码的时候源码上边哪部分能用作为其核心组成部分,讨论度更是居高不下。

2026年4月15日 01:00

parameter name(loadrunner怎么参数化设置)

parameter name(loadrunner怎么参数化设置)

是不是总觉得parameter name的知识体系太庞大,loadrunner怎么参数化设置更是无从下手?本文将帮你化繁为简,抓住核心。

2026年4月15日 00:40

多线程处理器什么意思(cpu低频率、低功耗,多核心,多线程是什么意思)

多线程处理器什么意思(cpu低频率、低功耗,多核心,多线程是什么意思)

关于多线程处理器什么意思,有一个概念至关重要,那就是cpu低频率、低功耗,多核心,多线程是什么意思。它为何如此重要?且听我们慢慢道来。

2026年4月15日 00:20

fscanf读取txt文件字符串(c++怎么读取txt文件中的两段字符串并且存入两个数组)

fscanf读取txt文件字符串(c++怎么读取txt文件中的两段字符串并且存入两个数组)

本文是您理解fscanf读取txt文件字符串的最后一站。我们将通过剖析c++怎么读取txt文件中的两段字符串并且存入两个数组,帮你打通任督二脉,彻底领悟。

2026年4月15日 00:00

若变量已正确说明为float类型(X为float型变量,则以下语句)

若变量已正确说明为float类型(X为float型变量,则以下语句)

为什么说不懂X为float型变量,则以下语句,就等于没学明白若变量已正确说明为float类型?这篇文章将给你一个令人信服的解释。

2026年4月14日 23:40

学pytorch前需要懂python吗(想学深度学习开发,需要提前掌握哪些python知识)

学pytorch前需要懂python吗(想学深度学习开发,需要提前掌握哪些python知识)

面对学pytorch前需要懂python吗这个议题,很多人在想学深度学习开发,需要提前掌握哪些python知识这里栽了跟头。今天,我们就来聊聊如何避免这个坑,轻松上手。

2026年4月14日 23:20

reactive翻译(reactive oxygen species是什么意思)

reactive翻译(reactive oxygen species是什么意思)

我们注意到,那些在reactive翻译上表现突出的人,往往都对reactive oxygen species是什么意思有独到的见解。这并非巧合。

2026年4月14日 23:00

layer的短语(什么是a la carte)

layer的短语(什么是a la carte)

就像学骑车需要掌握平衡一样,理解layer的短语的窍门,恰恰在于把握好什么是a la carte这个“平衡点”。

2026年4月14日 22:40

springboot starter(你知道的SpringBoot中常用的starter都有哪些)

springboot starter(你知道的SpringBoot中常用的starter都有哪些)

你是否好奇,为什么人人都在谈springboot starter?它和你知道的SpringBoot中常用的starter都有哪些之间究竟存在着怎样微妙的联系?答案就在下文。

2026年4月14日 22:20

最近更新

parameter name(loadrunner怎么参数化设置)
2026-04-15 00:40:03 浏览:0
reactive翻译(reactive oxygen species是什么意思)
2026-04-14 23:00:02 浏览:0
layer的短语(什么是a la carte)
2026-04-14 22:40:02 浏览:0
热门文章

win10安装silverlight(silverlight安装失败)
2026-04-02 12:40:01 浏览:0
layernorm pytorch(batch norm和layer norm)
2026-04-01 23:20:02 浏览:0
cmd grep命令(如何在Command Line 命令中使用Grep)
2026-04-01 15:20:02 浏览:0
标签列表