当前位置: 首页 > news >正文

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的核心类库,如DispatcherServletRequestMappingHandlerAdapter等,并通过自动配置类(如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.propertiesapplication.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.propertiesapplication.yml文件中配置Redis的连接信息,如主机地址、端口号等。然后,开发者只需注入RedisTemplateStringRedisTemplate即可实现对Redis的各种操作。

2. 原理

spring-boot-starter-data-redis通过Spring Boot的自动配置机制,自动配置Redis的连接工厂和模板类。它包含了Spring Data Redis的自动配置类(如RedisAutoConfiguration),用于创建和配置RedisTemplateStringRedisTemplate等核心组件。此外,它还支持通过注解方式实现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.propertiesapplication.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-webWeb开发starterSpring MVC、Tomcat等自动配置Tomcat和Spring MVC构建Web应用程序
spring-boot-starter-data-jpaJPA数据访问starterSpring Data JPA、Hibernate等自动配置JPA的实体管理器工厂、事务管理器等访问关系型数据库
spring-boot-starter-data-redisRedis数据库starterSpring Data Redis、Lettuce客户端等自动配置Redis的连接工厂和模板类缓存、消息队列、会话存储等
spring-boot-starter-data-solrSolr搜索引擎starterSpring Data Solr等自动配置Solr的连接客户端和模板类全文搜索功能
mybatis-spring-boot-starterMyBatis框架starterMyBatis、Spring集成库等自动配置MyBatis的SqlSessionFactory和SqlSessionTemplate等细粒度控制SQL语句的场景
七、打结

Spring Boot的starter机制为开发者提供了极大的便利,通过预定义的依赖集合和自动配置机制,简化了项目的搭建和配置过程。上述介绍的几个starter分别适用于不同的场景,开发者可以根据项目的需求选择合适的starter来快速构建和配置应用程序。同时,开发者也可以通过自定义starter来扩展Spring Boot的功能,满足特定项目的需求。

相关文章:

Spring Boot框架Starter组件整理

在Spring Boot框架中&#xff0c;starter是一种预定义的依赖集合&#xff0c;旨在简化Maven或Gradle等构建工具中的依赖管理。每个starter都包含了实现特定功能所需的库和组件&#xff0c;以及相应的配置文件。开发者只需在项目中引入相应的starter依赖&#xff0c;即可快速搭建…...

C/C++基础知识复习(27)

1) 移动语义和拷贝语义的区别 拷贝语义和移动语义是C中对象所有权管理的两种机制&#xff0c;主要在对象初始化、赋值或传参时体现。 拷贝语义 (Copy Semantics) 行为&#xff1a;通过深拷贝或浅拷贝&#xff0c;创建一个新对象&#xff0c;并将原对象的值或资源复制到新对象…...

IEC61850实现方案和测试-2

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

flume-将日志采集到hdfs

看到hdfs大家应该做什么&#xff1f; 是的你应该去把集群打开&#xff0c; cd /export/servers/hadoop/sbin 启动集群 ./start-all.sh 在虚拟机hadoop02和hadoop03上的conf目录下配置相同的日志采集方案&#xff0c;‘ cd /export/servers/flume/conf 切换完成之后&#…...

一文学习开源框架LeakCanary

LeakCanary 简介 LeakCanary 是一个由 Square 开发的开源工具&#xff0c;主要用于检测和诊断 Android 应用中的内存泄漏问题。它通过自动化的方式帮助开发者捕捉和分析可能导致内存泄漏的对象&#xff0c;简化了内存问题的排查过程。 LeakCanary 的功能 自动检测内存泄漏&a…...

jetson orin系列开发版安装cuda的gpu版本的opencv

opencv安装包下载地址&#xff1a; https://github.com/opencv/opencv/扩展库下载地址&#xff1a; https://github.com/opencv/opencv_contrib1. 删除jetpack包中的opencv版本 原先的opencv库安装在目录/usr/lib/aarch64-linux-gnu/下&#xff08;一般其他的第三方库也都安…...

数据结构-8.Java. 七大排序算法(中篇)

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

数据结构C语言描述4(图文结合)--栈的实现,中序转后序表达式的实现

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法&#xff1b;有C基础即可跟着学习&#xff0c;代码均可运行&#xff1b;准备考研的也可跟着写&#xff0c;个人感觉&#xff0c;如果时间充裕&#xff0c;手写一遍比看书、刷题管用很多&#xff0c;这也是本人采用纯C语言…...

python基本数据类型 -- 元组tuple

在 Python 中&#xff0c;元组&#xff08;Tuple&#xff09;是一种轻量级的、不可变的数据结构。与列表类似&#xff0c;元组用于存储有序的数据集合&#xff0c;但它一旦创建&#xff0c;其内容就无法更改。这种特性让元组在某些场景下更加安全和高效。本文将从定义、操作、应…...

tcpdump交叉编译

TCPDUMP在Libpcap上开发。 首先需要编译libcap。 网上那么多教程&#xff0c;下载地址都只给了一个英文的官网首页&#xff0c; 你尽可以试试&#xff0c;从里面找到下载地址都要费半天时间。 \color{red}网上那么多教程&#xff0c;下载地址都只给了一个英文的官网首页&#…...

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 是微信小程序中的一个重要函数&#xff0c;用于自定义转发内容。当用户点击右上角的菜单按钮&#xff0c;并选择“转发”时&#xff0c;会触发这个函数。开发者可以在这个函数中返回一个对象&#xff0c;用于定义分享卡片的标题、图片、路径等信息。 使用场…...

利用uniapp开发鸿蒙:运行到鸿蒙模拟器—踩坑合集

从uniapp运行到鸿蒙模拟器上这一步&#xff0c;就有非常多的坑&#xff0c;一些常见的坑&#xff0c;官网都有介绍&#xff0c;就不再拿出来了&#xff0c;这里记录一下官网未记录的大坑 1.运行路径从hbuilderx启动鸿蒙模拟器 解决方法&#xff1a; Windows系统&#xff0c;官…...

【Vue】Vue3.0(二十五)Vue3.0中的具名插槽 的概念和使用场景

上篇文章 【Vue】Vue3.0&#xff08;二十四&#xff09;Vue3.0中 r e f s 、 refs 、 refs、parent 的概念和使用场景 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Vue专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;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语言允许函数的返回值是一个指针&#xff08;地址&#xff09;我们将这样的函数称为指针函数&#xff0c;下面的例子定义一了一个函数strlong&#xff08;&#xff09;&#xff0c;用来返回两个字符串中较长的一个&#xff1a; 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

由于我只有用户权限&#xff0c;没有sudo权限&#xff0c;将zsh作为用户默认shell需要密码&#xff0c;所以没法在系统层面进行操作&#xff0c;下面另寻他法。 安装zsh 可以根据网上教程去安装zsh&#xff0c;一般电脑上会带有zsh&#xff0c;可以使用下述命令查看是否安装z…...

【React 进阶】掌握 React18 全部 Hooks

一、数据更新驱动 1. useState 1. 基础介绍 useState主要用于声明和操作状态变量&#xff0c;可以使函数组件像类组件一样拥有state const [state, setState] useState(initialState);state&#xff1a;状态&#xff0c;作为渲染视图的数据源 setState&#xff1a;改变st…...

【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)

【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现&#xff08;Kalman Filter&#xff09; 更新以gitee为准&#xff1a; 文章目录 数据预测概念和适用方式线性系统的适用性 数据预测算法和卡尔曼滤波公式推导状态空间方程和观测器先验估计后验估计…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...