1. 首页
  2. 软件开发
  3. JAVA
  4. Spring Boot starter(启动器)

Spring Boot starter(启动器)

  • 发布于 2024-08-14
  • 0 次阅读

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

一、Spring Boot 启动器简介

        Spring Boot 启动器是一组方便的依赖项描述符,可以在 pom 中引入其依赖,免去了自己需要引用很多依赖类,并且 SpringBoot 会自动进行类的自动配置。

        SpringBoot 提供了两个 Runner 启动器——CommandLineRunner、ApplicationRunner 接口,可以在接口的 run 方法中实现初始化操作。

        Starters 可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。

        Spring Boot 的启动过程可以分为两个核心步骤:初始化 SpringApplication 对象和执行该对象的 run 方法。

        Spring Boot 将所有的功能场景都抽取出来,做成一个个的 starters(启动器),只需要在项目里面引入这些 starter,相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器。比如我们要创建一个 web 项目,使用 Spring 的朋友都知道,在使用 Spring 的时候,需要在 pom 文件中添加多个依赖,而 Spring Boot 则会帮助开发着快速启动一个 web 容器,在 Spring Boot 中,我们只需要在 pom 文件中添加如下一个 starter-web 依赖即可。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

        我们点击进入该依赖后可以看到,Spring Boot 这个 starter-web 已经包含了多个依赖,包括之前在 Spring 工程中需要导入的依赖,如下:   

<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>3.2.3</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-json</artifactId>
      <version>3.2.3</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <version>3.2.3</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>6.1.4</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>6.1.4</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>

        由此可以看出,Spring Boot 大大简化了我们的编码,我们不用一个个导入依赖,直接一个依赖即可。

二、Spring Boot 提供的启动器(starter)

        下面是 SpringBoot 所提供的一些启动器。

2.1、Spring Boot 应用程序启动器

名字描述

spring-boot-starter

核心启动器,包括自动配置支持、日志记录和 YAML

spring-boot-starter-activemq

使用 Apache ActiveMQ 的 JMS 消息传递入门

spring-boot-starter-amqp

使用 Spring AMQP 和 Rabbit MQ 的入门级

spring-boot-starter-aop

使用 Spring AOP 和 AspectJ 进行面向方面的编程的入门级

spring-boot-starter-artemis

使用 Apache Artemis 的 JMS 消息传递入门

spring-boot-starter-batch

使用 Spring Batch 的入门

spring-boot-starter-cache

使用 Spring Framework 缓存支持的入门级

spring-boot-starter-data-cassandra

使用 Cassandra 分布式数据库和 Spring Data Cassandra 的入门级

spring-boot-starter-data-cassandra-reactive

使用 Cassandra 分布式数据库和 Spring Data Cassandra Reactive 的入门级

spring-boot-starter-data-couchbase

使用 Couchbase 面向文档的数据库和 Spring Data Couchbase 的入门级

spring-boot-starter-data-couchbase-reactive

使用 Couchbase 面向文档的数据库和 Spring Data Couchbase Reactive 的入门

spring-boot-starter-data-elasticsearch

使用 Elasticsearch 搜索和分析引擎以及 Spring Data Elasticsearch 的入门级

spring-boot-starter-data-jdbc

使用 Spring Data JDBC 的入门级

spring-boot-starter-data-jpa

将 Spring Data JPA 与 Hibernate 一起使用的入门级

spring-boot-starter-data-ldap

使用 Spring Data LDAP 的入门

spring-boot-starter-data-mongodb

使用 MongoDB 面向文档的数据库和 Spring Data MongoDB 的入门级

spring-boot-starter-data-mongodb-reactive

使用 MongoDB 面向文档的数据库和 Spring Data MongoDB Reactive 的入门版

spring-boot-starter-data-neo4j

使用 Neo4j 图形数据库和 Spring Data Neo4j 的入门级

spring-boot-starter-data-r2dbc

使用 Spring Data R2DBC 的入门级

spring-boot-starter-data-redis

将 Redis 键值数据存储与 Spring Data Redis 和 Lettuce 客户端一起使用的入门级

spring-boot-starter-data-redis-reactive

将 Redis 键值数据存储与 Spring Data Redis reactive 和 Lettuce 客户端一起使用的入门

spring-boot-starter-data-rest

使用 Spring Data REST 和 Spring MVC 在 REST 上公开 Spring Data 存储库的 Starter

spring-boot-starter-freemarker

使用 FreeMarker 视图构建 MVC Web 应用程序的入门级

spring-boot-starter-graphql

使用 Spring GraphQL 构建 GraphQL 应用程序的入门级

spring-boot-starter-groovy-templates

使用 Groovy 模板视图构建 MVC Web 应用程序的入门级

spring-boot-starter-hateoas

使用 Spring MVC 和 Spring HATEOAS 构建基于超媒体的 RESTful Web 应用程序的入门级

spring-boot-starter-integration

使用 Spring Integration 的入门

spring-boot-starter-jdbc

将 JDBC 与 HikariCP 连接池配合使用的入门级

spring-boot-starter-jersey

使用 JAX-RS 和 Jersey 构建 RESTful Web 应用程序的入门级。spring-boot-starter-web 的替代方案

spring-boot-starter-jooq

使用 jOOQ 通过 JDBC 访问 SQL 数据库的入门级。spring-boot-starter-data-jpa 或 spring-boot-starter-jdbc 的替代方案

spring-boot-starter-json

读取和写入 json 的入门

spring-boot-starter-mail

使用 Java Mail 和 Spring Framework 的电子邮件发送支持的入门级

spring-boot-starter-mustache

使用 Mustache 视图构建 Web 应用程序的入门级

spring-boot-starter-oauth2-authorization-server

使用 Spring 授权服务器功能的入门级

spring-boot-starter-oauth2-client

使用 Spring Security 的 OAuth2/OpenID Connect 客户端功能的入门级

spring-boot-starter-oauth2-resource-server

使用 Spring Security 的 OAuth2 资源服务器功能的入门级

spring-boot-starter-pulsar

将 Spring 用于 Apache Pulsar 的入门级

spring-boot-starter-pulsar-reactive

将 Spring 用于 Apache Pulsar Reactive 的入门级

spring-boot-starter-quartz

使用 Quartz 调度程序的入门

spring-boot-starter-rsocket

用于构建 RSocket 客户端和服务器的入门级

spring-boot-starter-security

使用 Spring Security 的入门级

spring-boot-starter-test

使用包括 JUnit Jupiter、Hamcrest 和 Mockito 在内的库测试 Spring Boot 应用程序的入门程序

spring-boot-starter-thymeleaf

使用 Thymeleaf 视图构建 MVC Web 应用程序的入门级

spring-boot-starter-validation

将 Java Bean Validation 与 Hibernate Validator 配合使用的入门级

spring-boot-starter-web

使用 Spring MVC 构建 Web 应用程序(包括 RESTful)的入门级应用程序。使用 Tomcat 作为默认的嵌入容器

spring-boot-starter-web-services

使用 Spring Web 服务的入门级

spring-boot-starter-webflux

使用 Spring Framework 的 Reactive Web 支持构建 WebFlux 应用程序的入门级

spring-boot-starter-websocket

使用 Spring Framework 的 MVC WebSocket 支持构建 WebSocket 应用程序的入门级

2.2、Spring Boot 生产启动器

        除了应用程序启动器之外,以下启动器还可用于添加_生产就绪_功能:

名字描述

spring-boot-starter-actuator

使用 Spring Boot 的 Actuator 的入门级,它提供生产就绪功能来帮助您监控和管理您的应用程序

2.3、Spring Boot 技术入门启动器 

      最后,Spring Boot 还包括以下启动器,如果要排除或交换特定的技术方面,可以使用这些启动器:

名字描述

spring-boot-starter-jetty

使用 Jetty 作为嵌入式 servlet 容器的入门器。spring-boot-starter-tomcat 的替代品

spring-boot-starter-log4j2

使用 Log4j2 进行日志记录的入门级。spring-boot-starter-loggingspring-boot-starter-logging 的替代方案

spring-boot-starter-logging

使用 Logback 进行日志记录的入门级。默认日志记录启动器

spring-boot-starter-reactor-netty

使用 Reactor Netty 作为嵌入式响应式 HTTP 服务器的入门。

spring-boot-starter-tomcat

使用 Tomcat 作为嵌入式 servlet 容器的入门。spring-boot-starter-web 使用的默认 servlet 容器启动器

spring-boot-starter-undertow

使用 Undertow 作为嵌入式 servlet 容器的入门。spring-boot-starter-tomcat 的替代品

三、自定义 Spring Boot 启动器 

       有时候,springboot 官方提供的场景启动器 (starter) 并不能很好的满足我们的需求,这时候,我们可以考虑自行编写场景启动器,然后在 common 模块引入即可。 启动器包了一层自动配置类,自动配置类作用就是写 @Bean 注解,往容器里面配置 Bean,然后 Bean 所需要的属性都来源于配置文件所映射的属性配置类。 springboot 是按照这个模式开发启动器的,所以我们也这样操作,在需要的项目中引入启动器即可。

3.1、命名规约

  • spring 官方:spring-boot-starter-xxx

  • 自定义:xxx-spring–boot-starter

        Spring Boot 官方的启动器都是以 spring-boot-starter- _命名的,_代表了一个特定的应用类型。第三方的启动器不能以 spring-boot 开头命名,它们都被 Spring Boot 官方保留。第三方启动器通常以项目名称开头。 例如,名为第三方入门项目通常被命名为 :springbootthirdproject-spring-boot-starter 。​ ​ ​