题目
SpringBoot 常用的 starter 有哪些
答案
@[toc] --- ## spring-boot-starter ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.6.2</version> <scope>compile</scope> </dependency> ``` 这是Spring Boot的核心启动器,包含了自动配置、日志和YAML。 一般不会直接使用,大部分 spring-boot-starter-[name] 会自动依赖引入的。 ## spring-boot-starter-web ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` 支持全栈式Web开发,包括Tomcat和spring-webmvc。 ## spring-boot-starter-aop ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> ``` 支持面向方面的编程即AOP,包括spring-aop和AspectJ。 ## spring-boot-starter-test ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> ``` 支持常规的测试依赖,包括 JUnit、Hamcrest、Mockito 以及 spring-test 模块。 ## spring-boot-starter-logging ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> ``` 引入了 Spring Boot 默认的日志框架 Logback ## spring-boot-starter-log4j ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> </dependency> ``` 支持 Log4J 日志框架。 ## spring-boot-starter-jdbc ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> ``` 支持 JDBC 数据库。 ## spring-boot-starter-data-redis ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 支持 Redis 键值存储数据库,包括 spring-redis。 ## spring-boot-starter-cache ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> ``` 支持Spring的 Cache 抽象 ## spring-boot-starter-data-elasticsearch ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> ``` 支持ElasticSearch搜索和分析引擎,包括spring-data-elasticsearch。 ## spring-boot-starter-data-jpa ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 持JPA(Java Persistence API,包括spring-data-jpa、spring-orm、Hibernate。 ## spring-boot-starter-data-mongodb ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 支持MongoDB数据,包括spring-data-mongodb。 ## spring-boot-starter-security ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> ``` 支持spring-security。 ## 特殊的 starter:spring-boot-starter-parent spring-boot-starter-parent 只用来作为其他 maven 项目的 parent,因此它除了 pom 文件并没有什么有效的内容,要理解 spring-boot-starter-parent,还得看它的 pom 文件定义。由于 pom 文件内容过长,下面我们分别进行介绍它主要引入的功能。 1. **依赖版本管理** `spring-boot-starter-parent` 自身并没有定义 `dependencyManagement`,依赖管理依托于它的 parent `spring-boot-dependencies`: ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSn6bmPY29vbA==,size_20,color_FFFFFF,t_70,g_se,x_16.png) `spring-boot-dependencies` 内部定义了很多依赖,这样我们就不用关心依赖的版本了: > 可以点进 `spring-boot-dependencies` 中查看定义了哪些依赖的版本,如果有的话后续导入依赖的时候就不需要再指定 `version` 了 ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSn6bmPY29vbA==,size_20,color_FFFFFF,t_70,g_se,x_16-20230605210823412.png) 示例代码如下。 ```xml <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <version>2.2.7.RELEASE</version> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> </parent> <groupId>com.veal</groupId> <artifactId>project-parent</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> // 此处不需要指定 version,已在 spring-boot-dependencies 中指定 </dependency> </dependencies> </project> ``` 2. **属性配置** `spring-boot-starter-parent` 添加了一些默认的配置,如指定了使用的 JDK 版本号为 1.8,编译时使用 UTF-8 编码方式 ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSn6bmPY29vbA==,size_20,color_FFFFFF,t_70,g_se,x_16-20230605211151409.png) 3. **资源过滤** `spring-boot-starter-parent` 指定了编译资源文件时将 `**/application*.properties`、`**/application*.yml` 和 `**/application*.yaml` 中的 maven 占位符替换为具体的属性值 ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSn6bmPY29vbA==,size_20,color_FFFFFF,t_70,g_se,x_16-20230605211217695.png) > 如果没有引入 `spring-boot-starter-parent`,需要在 `application.properties` 文件中使用 `maven` 占位符时切记要手动配置 `resource`。 4. **插件配置** spring-boot-starter-parent 内置了不少插件配置,比如 maven-compiler-plugin 和 spring-boot-maven-plugin ## mybatis-spring-boot-starter ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> ``` 支持 MyBatis。 > 由于不是SpringBoot团队开发的,所以命名风格略有不同 ## pagehelper-spring-boot-starter ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> </dependency> ``` 支持 MyBatis PageHelper 分页