当前位置: 首页 > 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; 文章目录 数据预测概念和适用方式线性系统的适用性 数据预测算法和卡尔曼滤波公式推导状态空间方程和观测器先验估计后验估计…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

Linux基础开发工具——vim工具

文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...

【Zephyr 系列 16】构建 BLE + LoRa 协同通信系统:网关转发与混合调度实战

🧠关键词:Zephyr、BLE、LoRa、混合通信、事件驱动、网关中继、低功耗调度 📌面向读者:希望将 BLE 和 LoRa 结合应用于资产追踪、环境监测、远程数据采集等场景的开发者 📊篇幅预计:5300+ 字 🧭 背景与需求 在许多 IoT 项目中,单一通信方式往往难以兼顾近场数据采集…...

PostgreSQL 对 IPv6 的支持情况

PostgreSQL 对 IPv6 的支持情况 PostgreSQL 全面支持 IPv6 网络协议&#xff0c;包括连接、存储和操作 IPv6 地址。以下是详细说明&#xff1a; 一、网络连接支持 1. 监听 IPv6 连接 在 postgresql.conf 中配置&#xff1a; listen_addresses 0.0.0.0,:: # 监听所有IPv4…...

XXE漏洞知识

目录 1.XXE简介与危害 XML概念 XML与HTML的区别 1.pom.xml 主要作用 2.web.xml 3.mybatis 2.XXE概念与危害 案例&#xff1a;文件读取&#xff08;需要Apache >5.4版本&#xff09; 案例&#xff1a;内网探测&#xff08;鸡肋&#xff09; 案例&#xff1a;执行命…...