Spring Boot框架Starter组件整理
在Spring Boot框架中,starter是一种预定义的依赖集合,旨在简化Maven或Gradle等构建工具中的依赖管理。每个starter都包含了实现特定功能所需的库和组件,以及相应的配置文件。开发者只需在项目中引入相应的starter依赖,即可快速搭建起具备该功能的项目骨架。本文将详细整理Spring Boot中常用的几个starter,包括其用法、原理及场景。
一、spring-boot-starter-web
1. 用法
spring-boot-starter-web
是Spring Boot为Web开发提供的核心starter。它包含了构建Web应用程序所需的所有库和配置,如Spring MVC、Tomcat和相关的Web技术。使用它非常简单,只需在项目的pom.xml
文件中添加以下依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
添加依赖后,Spring Boot会自动配置Tomcat和Spring MVC,开发者只需专注于业务逻辑的实现。
2. 原理
spring-boot-starter-web
通过Spring Boot的自动配置机制,根据项目的依赖情况自动进行bean的定义和属性的配置。它包含了Spring MVC的核心类库,如DispatcherServlet
、RequestMappingHandlerAdapter
等,并通过自动配置类(如WebMvcAutoConfiguration
)来配置这些组件。此外,它还包含了嵌入式Tomcat的依赖,使得开发者无需手动配置Servlet容器。
3. 场景
spring-boot-starter-web
适用于需要构建Web应用程序的场景,无论是RESTful Web服务还是传统的基于表单的Web应用程序。它简化了Web开发的配置和依赖管理,使得开发者能够快速进入开发状态。
二、spring-boot-starter-data-jpa
1. 用法
spring-boot-starter-data-jpa
是Spring Boot为数据访问层提供的JPA(Java Persistence API)starter。它包含了Spring Data JPA和Hibernate等核心库,使得开发者能够方便地与关系型数据库进行交互。使用它时,需要在pom.xml
文件中添加以下依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
添加依赖后,还需在application.properties
或application.yml
文件中配置数据库连接信息,如URL、用户名和密码等。然后,开发者只需定义实体类和仓库接口,即可实现对数据库的CRUD操作。
2. 原理
spring-boot-starter-data-jpa
通过Spring Boot的自动配置机制,自动配置JPA的实体管理器工厂、事务管理器等核心组件。它还包含了Spring Data JPA的自动配置类(如JpaRepositoriesAutoConfiguration
),用于扫描和注册仓库接口。此外,它还支持通过注解方式实现实体建模和关系映射。
3. 场景
spring-boot-starter-data-jpa
适用于需要访问关系型数据库的场景,无论是简单的CRUD操作还是复杂的查询操作。它简化了数据访问层的配置和依赖管理,使得开发者能够更专注于业务逻辑的实现。
三、spring-boot-starter-data-redis
1. 用法
spring-boot-starter-data-redis
是Spring Boot为Redis数据库提供的starter。它包含了Spring Data Redis和Lettuce客户端等核心库,使得开发者能够方便地与Redis进行交互。使用它时,需要在pom.xml
文件中添加以下依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
添加依赖后,还需在application.properties
或application.yml
文件中配置Redis的连接信息,如主机地址、端口号等。然后,开发者只需注入RedisTemplate
或StringRedisTemplate
即可实现对Redis的各种操作。
2. 原理
spring-boot-starter-data-redis
通过Spring Boot的自动配置机制,自动配置Redis的连接工厂和模板类。它包含了Spring Data Redis的自动配置类(如RedisAutoConfiguration
),用于创建和配置RedisTemplate
和StringRedisTemplate
等核心组件。此外,它还支持通过注解方式实现Redis的缓存和消息队列等功能。
3. 场景
spring-boot-starter-data-redis
适用于需要缓存、消息队列、会话存储等场景。它简化了Redis的配置和依赖管理,使得开发者能够更高效地利用Redis的高性能和分布式特性。
四、spring-boot-starter-data-solr
1. 用法
spring-boot-starter-data-solr
是Spring Boot为Solr搜索引擎提供的starter。它包含了Spring Data Solr的核心库,使得开发者能够方便地与Solr进行交互。使用它时,需要在pom.xml
文件中添加以下依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>
添加依赖后,还需在application.properties
或application.yml
文件中配置Solr的连接信息,如主机地址等。然后,开发者只需定义实体类和仓库接口,即可实现对Solr的CRUD操作。
2. 原理
spring-boot-starter-data-solr
通过Spring Boot的自动配置机制,自动配置Solr的连接客户端和模板类。它包含了Spring Data Solr的自动配置类(如SolrRepositoriesAutoConfiguration
),用于扫描和注册仓库接口。此外,它还支持通过注解方式实现实体建模和关系映射。
3. 场景
spring-boot-starter-data-solr
适用于需要全文搜索功能的场景,如电商网站的商品搜索、新闻网站的文章搜索等。它简化了Solr的配置和依赖管理,使得开发者能够更专注于搜索功能的实现。
五、mybatis-spring-boot-starter
1. 用法
mybatis-spring-boot-starter
是Spring Boot为MyBatis框架提供的starter。它包含了MyBatis和Spring集成的核心库,使得开发者能够方便地在Spring Boot项目中使用MyBatis。使用它时,需要在pom.xml
文件中添加以下依赖:
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
添加依赖后,开发者只需定义Mapper接口和XML映射文件(可选),即可实现对数据库的CRUD操作。
2. 原理
mybatis-spring-boot-starter
通过Spring Boot的自动配置机制,自动配置MyBatis的SqlSessionFactory和SqlSessionTemplate等核心组件。它还包含了MapperScannerConfigurer,用于扫描和注册Mapper接口。此外,它还支持通过注解方式实现实体建模和关系映射。
3. 场景
mybatis-spring-boot-starter
适用于需要细粒度控制SQL语句的场景,如复杂的查询操作、动态SQL等。它简化了MyBatis的配置和依赖管理,使得开发者能够更灵活地使用MyBatis的强大功能。
六、比较一下
Starter名称 | 描述 | 主要库和组件 | 自动配置内容 | 适用场景 |
---|---|---|---|---|
spring-boot-starter-web | Web开发starter | Spring MVC、Tomcat等 | 自动配置Tomcat和Spring MVC | 构建Web应用程序 |
spring-boot-starter-data-jpa | JPA数据访问starter | Spring Data JPA、Hibernate等 | 自动配置JPA的实体管理器工厂、事务管理器等 | 访问关系型数据库 |
spring-boot-starter-data-redis | Redis数据库starter | Spring Data Redis、Lettuce客户端等 | 自动配置Redis的连接工厂和模板类 | 缓存、消息队列、会话存储等 |
spring-boot-starter-data-solr | Solr搜索引擎starter | Spring Data Solr等 | 自动配置Solr的连接客户端和模板类 | 全文搜索功能 |
mybatis-spring-boot-starter | MyBatis框架starter | MyBatis、Spring集成库等 | 自动配置MyBatis的SqlSessionFactory和SqlSessionTemplate等 | 细粒度控制SQL语句的场景 |
七、打结
Spring Boot的starter机制为开发者提供了极大的便利,通过预定义的依赖集合和自动配置机制,简化了项目的搭建和配置过程。上述介绍的几个starter分别适用于不同的场景,开发者可以根据项目的需求选择合适的starter来快速构建和配置应用程序。同时,开发者也可以通过自定义starter来扩展Spring Boot的功能,满足特定项目的需求。
相关文章:
Spring Boot框架Starter组件整理
在Spring Boot框架中,starter是一种预定义的依赖集合,旨在简化Maven或Gradle等构建工具中的依赖管理。每个starter都包含了实现特定功能所需的库和组件,以及相应的配置文件。开发者只需在项目中引入相应的starter依赖,即可快速搭建…...
C/C++基础知识复习(27)
1) 移动语义和拷贝语义的区别 拷贝语义和移动语义是C中对象所有权管理的两种机制,主要在对象初始化、赋值或传参时体现。 拷贝语义 (Copy Semantics) 行为:通过深拷贝或浅拷贝,创建一个新对象,并将原对象的值或资源复制到新对象…...

IEC61850实现方案和测试-2
IEC61850实现方案和测试-1作为介绍实现方案和测试的第二篇文章,后续会继续更新,欢迎关注。 第一篇是:IEC61850实现方案和测试-1-CSDN博客 UCA详细测试用例下载: 链接: https://pan.baidu.com/s/1TTMlYRfzKITgrkWwwtcrDg 提取码:…...

flume-将日志采集到hdfs
看到hdfs大家应该做什么? 是的你应该去把集群打开, cd /export/servers/hadoop/sbin 启动集群 ./start-all.sh 在虚拟机hadoop02和hadoop03上的conf目录下配置相同的日志采集方案,‘ cd /export/servers/flume/conf 切换完成之后&#…...
一文学习开源框架LeakCanary
LeakCanary 简介 LeakCanary 是一个由 Square 开发的开源工具,主要用于检测和诊断 Android 应用中的内存泄漏问题。它通过自动化的方式帮助开发者捕捉和分析可能导致内存泄漏的对象,简化了内存问题的排查过程。 LeakCanary 的功能 自动检测内存泄漏&a…...

jetson orin系列开发版安装cuda的gpu版本的opencv
opencv安装包下载地址: https://github.com/opencv/opencv/扩展库下载地址: https://github.com/opencv/opencv_contrib1. 删除jetpack包中的opencv版本 原先的opencv库安装在目录/usr/lib/aarch64-linux-gnu/下(一般其他的第三方库也都安…...

数据结构-8.Java. 七大排序算法(中篇)
本篇博客给大家带来的是排序的知识点, 由于时间有限, 分两天来写, 中篇主要实现后三种排序算法: 冒泡排序,快速排序,下一篇讲 归并排序. 文章专栏: Java-数据结构 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作…...

数据结构C语言描述4(图文结合)--栈的实现,中序转后序表达式的实现
前言 这个专栏将会用纯C实现常用的数据结构和简单的算法;有C基础即可跟着学习,代码均可运行;准备考研的也可跟着写,个人感觉,如果时间充裕,手写一遍比看书、刷题管用很多,这也是本人采用纯C语言…...
python基本数据类型 -- 元组tuple
在 Python 中,元组(Tuple)是一种轻量级的、不可变的数据结构。与列表类似,元组用于存储有序的数据集合,但它一旦创建,其内容就无法更改。这种特性让元组在某些场景下更加安全和高效。本文将从定义、操作、应…...

tcpdump交叉编译
TCPDUMP在Libpcap上开发。 首先需要编译libcap。 网上那么多教程,下载地址都只给了一个英文的官网首页, 你尽可以试试,从里面找到下载地址都要费半天时间。 \color{red}网上那么多教程,下载地址都只给了一个英文的官网首页&#…...
Spring IOC注入方式、Bean作用域
Spring IOC注入 手动注入 set方法注入 需要提供set方法 public class UserService {private UserDao userDao; public void setUserDao(UserDao userDao) {this.userDao userDao;} } 设置属性字段的值 <bean id"userService" class"com.shsxt.servi…...

uniapp微信小程序转发跳转指定页面
onShareAppMessage 是微信小程序中的一个重要函数,用于自定义转发内容。当用户点击右上角的菜单按钮,并选择“转发”时,会触发这个函数。开发者可以在这个函数中返回一个对象,用于定义分享卡片的标题、图片、路径等信息。 使用场…...

利用uniapp开发鸿蒙:运行到鸿蒙模拟器—踩坑合集
从uniapp运行到鸿蒙模拟器上这一步,就有非常多的坑,一些常见的坑,官网都有介绍,就不再拿出来了,这里记录一下官网未记录的大坑 1.运行路径从hbuilderx启动鸿蒙模拟器 解决方法: Windows系统,官…...

【Vue】Vue3.0(二十五)Vue3.0中的具名插槽 的概念和使用场景
上篇文章 【Vue】Vue3.0(二十四)Vue3.0中 r e f s 、 refs 、 refs、parent 的概念和使用场景 🏡作者主页:点击! 🤖Vue专栏:点击! ⏰️创作时间:2024年11月20日16点30分 …...
【pytorch-02】:张量的索引、形状操作和常见运算函数
文章目录 1 张量索引1.1 简单行列索引和列表索引1.2 布尔索引和多维索引 2 张量的形状操作2.1 reshape函数2.2 transpose和permute函数的使用2.3 view和contiguous函数2.4 squeeze和unsqueeze函数用法2.5 张量更改形状小结 3 常见运算函数 1 张量索引 1.1 简单行列索引和列表索…...

C语言-指针作为函数返回值及二级指针
1、指针作为函数返回值 c语言允许函数的返回值是一个指针(地址)我们将这样的函数称为指针函数,下面的例子定义一了一个函数strlong(),用来返回两个字符串中较长的一个: 1. #include <stdio…...

css 使用图片作为元素边框
先看原始图片 再看效果 边框的四个角灭有拉伸变形,但是图片的中部是拉伸的 代码 border-style: solid;/* 设置边框图像的来源 */border-image-source: url(/static/images/mmwz/index/bk_hd3x.png);/* 设置如何切割图像 */border-image-slice: 66;/* 设置边框的宽度 */border…...
Linux无sudo权限将zsh作为默认shell
由于我只有用户权限,没有sudo权限,将zsh作为用户默认shell需要密码,所以没法在系统层面进行操作,下面另寻他法。 安装zsh 可以根据网上教程去安装zsh,一般电脑上会带有zsh,可以使用下述命令查看是否安装z…...
【React 进阶】掌握 React18 全部 Hooks
一、数据更新驱动 1. useState 1. 基础介绍 useState主要用于声明和操作状态变量,可以使函数组件像类组件一样拥有state const [state, setState] useState(initialState);state:状态,作为渲染视图的数据源 setState:改变st…...

【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter) 更新以gitee为准: 文章目录 数据预测概念和适用方式线性系统的适用性 数据预测算法和卡尔曼滤波公式推导状态空间方程和观测器先验估计后验估计…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...

2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...

CSS3相关知识点
CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...
Android屏幕刷新率与FPS(Frames Per Second) 120hz
Android屏幕刷新率与FPS(Frames Per Second) 120hz 屏幕刷新率是屏幕每秒钟刷新显示内容的次数,单位是赫兹(Hz)。 60Hz 屏幕:每秒刷新 60 次,每次刷新间隔约 16.67ms 90Hz 屏幕:每秒刷新 90 次,…...
Yii2项目自动向GitLab上报Bug
Yii2 项目自动上报Bug 原理 yii2在程序报错时, 会执行指定action, 通过重写ErrorAction, 实现Bug自动提交至GitLab的issue 步骤 配置SiteController中的actions方法 public function actions(){return [error > [class > app\helpers\web\ErrorAction,],];}重写Error…...