认识SpringBoot项目中的Starter
1.前言☕
大家好,我是Leo哥🫣🫣🫣,今天给大家带来关于精品SpringBoot专栏,暂且就给他起名为循序渐进学SpringBoot,这里我参考了我上一个专栏:循序渐进学SpringSecurity6。有需要的朋友可以抓紧学习来哈,带你从SpringSecurity从零到实战项目。好了,我们进入正题,为什么会有SpringBoot这个专栏呢,是这样的,今年Leo哥也是正在重塑知识体系,从基础到框架,而SpringBoot又是我们框架中的核心,我觉得很有必要通过以博客的形式将我的知识系列进行输出,同时也锻炼一下自己的写作能力,如果能帮到大家那就更好啦!!!本地系列教程会从SpringBoot基础讲起,会以知识点+实例+项目的学习模式由浅入深对Spring Boot框架进行学习&使用。好了,话不多说让我们开始吧😎😎😎。
2.什么是starter
SpringBoot Starter 是 SpringBoot 中的一个重要概念,它是一种提供依赖项的方式,可以帮助开发人员快速集成各种第三方库和框架。SpringBoot Starter 的目的是简化 Spring 应用程序的依赖管理,将一组相关的依赖项打包在一起,并提供一个依赖项描述文件,使开发人员可以快速集成。
在 SpringBoot 中,Starter 是由一组 Maven 依赖项构成的,通常包含一个或多个自动配置模块**(Auto-Configuration Module)**。这些自动配置模块会根据当前应用程序中存在的类路径和其他条件来决定是否要启用某个模块。
例如,如果你正在构建一个web应用,你可以通过添加spring-boot-starter-web来获取SpringMVC和 Tomcat 的所有必需依赖。
3.为什么需要starter
其实在SpringBoot技术还没有出来之前,我们使用Spring开发项目。如果程序需要连接数据库,我们一般会使用Hibernate或Mybatis等ORM框架,这里我以Mybatis为例,具体的操作步骤如下:
- 去
maven仓库去找需要引入的mybatis相关jar包,选取合适的版本。 - 去
maven仓库去找mybatis-spring整合的jar包,选取合适的版本。 - 在spring的applicationContext.xml文件中配置dataSource和mybatis相关信息。
那不是还需要引入数据库驱动包吗?
确实需要引入,但数据库驱动有很多,比如:mysql、oracle、sqlserver,这不属于mybatis的范畴,使用者可以根据项目的实际情况单独引入。
如果程序只是需要连接数据库这一个功能还好,按上面的步骤做基本可以满足需求。但是,连接数据库可能只是庞大的项目体系中一个环节,实际项目中往往更复杂,需要引入更多的功能,比如:连接redis、连接mongodb、使用rocketmq、使用excel功能等等。
引入这些功能的话,需要再把上面的步骤再重复一次,工作量无形当中增加了不少,而且有很多重复的工作。
另外,还是有个问题,每次到要到maven中找合适的版本,如果哪次找的mybatis.jar包 和 mybatis-spring.jar包版本不兼容,程序不是会出现问题?
SpringBoot为了解决以上两个问题引入了starter机制。
4.如何引入stater
这里有两种引入方式。我们接下来一一介绍。
4.1 图形化引入
我们在这篇文章介绍创建springboot项目的时候,介绍了如果去常见SpringBoot项目。
我们可以在创建SringBoot工程项目的时候去勾选我们需要的starter。
4.2 POM引入
在项目根目录下有个 pom.xml ,在里头加入如下,并只引入 spring-boot-starter-web。
示例代码:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--SpringBoot父项目依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.5</version>
<relativePath/>
</parent>
<groupId>org.javatop</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--导入 spring-boot-starter-web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
可以直接引入springboot-starter依赖信息。
5.常用的starter
SpringBoot常用的starter有很多,以下是一些常见的starter:
- spring-boot-starter-web: 用于构建Web应用程序的starter,包括Spring MVC和Tomcat服务器。它提供了处理HTTP请求和响应的功能。
- spring-boot-starter-data-jpa: 用于与关系型数据库进行交互的starter,包括Spring Data JPA和Hibernate。它简化了与数据库的交互,提供了常见的CRUD操作。
- spring-boot-starter-security: 用于添加安全性功能的starter,包括Spring Security和OAuth2。它提供了身份验证、授权和安全配置的功能。
- spring-boot-starter-test: 用于编写单元测试和集成测试的starter,包括JUnit和Spring Test。它提供了测试框架和工具,方便进行单元测试和集成测试。
- spring-boot-starter-actuator: 用于监控和管理应用程序的starter,包括健康检查、指标收集和远程管理功能。它提供了监控应用程序运行状态的功能。
- spring-starter-cache: 用于添加缓存支持的starter,包括Spring Cache和Ehcache。它提供了缓存数据的功能,提高应用程序的性能。
- spring-boot-starter-data-redis:用于与Redis数据库进行交互的starter,包括Spring Data Redis。它简化了与Redis的交互,提供了常见的操作方法。
- spring-boot-starter-mail: 用于发送电子邮件的starter,包括JavaMail和Spring Mail。它提供了发送电子邮件的功能。
- spring-boot-starter-log4j2: 用于使用Log4j2进行日志记录的starter。它提供了日志记录的功能,方便调试和错误追踪。
- spring-boot-starter-thymeleaf: 用于使用Thymeleaf模板引擎的starter。它提供了使用Thymeleaf进行页面渲染的功能。
当然我这里只是列举了一些常用的,其实在SpringBoot源码中还有很多,下面给大家截图看看。
感兴趣的小伙伴可以去看看:starter
以上便是本文的全部内容,本人才疏学浅,文章有什么错误的地方,欢迎大佬们批评指正!我是Leo,一个在互联网行业的小白,立志成为更好的自己。
如果你想了解更多关于Leo,可以关注公众号-程序员Leo,后面文章会首先同步至公众号。
本文由博客一文多发平台 OpenWrite 发布!