Spring Boot starter(启动器)

一、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 。​ ​ ​

  • 35
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值