一、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 应用程序启动器
名字 | 描述 |
---|---|
核心启动器,包括自动配置支持、日志记录和 YAML |
|
使用 Apache ActiveMQ 的 JMS 消息传递入门 |
|
使用 Spring AMQP 和 Rabbit MQ 的入门级 |
|
使用 Spring AOP 和 AspectJ 进行面向方面的编程的入门级 |
|
使用 Apache Artemis 的 JMS 消息传递入门 |
|
使用 Spring Batch 的入门 |
|
使用 Spring Framework 缓存支持的入门级 |
|
使用 Cassandra 分布式数据库和 Spring Data Cassandra 的入门级 |
|
使用 Cassandra 分布式数据库和 Spring Data Cassandra Reactive 的入门级 |
|
使用 Couchbase 面向文档的数据库和 Spring Data Couchbase 的入门级 |
|
使用 Couchbase 面向文档的数据库和 Spring Data Couchbase Reactive 的入门 |
|
使用 Elasticsearch 搜索和分析引擎以及 Spring Data Elasticsearch 的入门级 |
|
使用 Spring Data JDBC 的入门级 |
|
将 Spring Data JPA 与 Hibernate 一起使用的入门级 |
|
使用Spring Data LDAP的入门 |
|
使用 MongoDB 面向文档的数据库和 Spring Data MongoDB 的入门级 |
|
使用 MongoDB 面向文档的数据库和 Spring Data MongoDB Reactive 的入门版 |
|
使用 Neo4j 图形数据库和 Spring Data Neo4j 的入门级 |
|
使用 Spring Data R2DBC 的入门级 |
|
将 Redis 键值数据存储与 Spring Data Redis 和 Lettuce 客户端一起使用的入门级 |
|
将 Redis 键值数据存储与 Spring Data Redis reactive 和 Lettuce 客户端一起使用的入门 |
|
使用 Spring Data REST 和 Spring MVC 在 REST 上公开 Spring Data 存储库的 Starter |
|
使用 FreeMarker 视图构建 MVC Web 应用程序的入门级 |
|
使用 Spring GraphQL 构建 GraphQL 应用程序的入门级 |
|
使用 Groovy 模板视图构建 MVC Web 应用程序的入门级 |
|
使用 Spring MVC 和 Spring HATEOAS 构建基于超媒体的 RESTful Web 应用程序的入门级 |
|
使用 Spring Integration 的入门 |
|
将 JDBC 与 HikariCP 连接池配合使用的入门级 |
|
使用 JAX-RS 和 Jersey 构建 RESTful Web 应用程序的入门级。spring-boot-starter-web 的替代方案 |
|
使用 jOOQ 通过 JDBC 访问 SQL 数据库的入门级。spring-boot-starter-data-jpa 或 spring-boot-starter-jdbc 的替代方案 | |
读取和写入 json 的入门 |
|
使用 Java Mail 和 Spring Framework 的电子邮件发送支持的入门级 |
|
使用 Mustache 视图构建 Web 应用程序的入门级 |
|
使用 Spring 授权服务器功能的入门级 |
|
使用 Spring Security 的 OAuth2/OpenID Connect 客户端功能的入门级 |
|
使用 Spring Security 的 OAuth2 资源服务器功能的入门级 |
|
将 Spring 用于 Apache Pulsar 的入门级 |
|
将 Spring 用于 Apache Pulsar Reactive 的入门级 |
|
使用 Quartz 调度程序的入门 |
|
用于构建 RSocket 客户端和服务器的入门级 |
|
使用 Spring Security 的入门级 |
|
使用包括 JUnit Jupiter、Hamcrest 和 Mockito 在内的库测试 Spring Boot 应用程序的入门程序 |
|
使用 Thymeleaf 视图构建 MVC Web 应用程序的入门级 |
|
将 Java Bean Validation 与 Hibernate Validator 配合使用的入门级 |
|
使用 Spring MVC 构建 Web 应用程序(包括 RESTful)的入门级应用程序。使用 Tomcat 作为默认的嵌入容器 |
|
使用 Spring Web 服务的入门级 |
|
使用 Spring Framework 的 Reactive Web 支持构建 WebFlux 应用程序的入门级 |
|
使用 Spring Framework 的 MVC WebSocket 支持构建 WebSocket 应用程序的入门级 |
2.2、Spring Boot 生产启动器
除了应用程序启动器之外,以下启动器还可用于添加生产就绪功能:
名字 | 描述 |
---|---|
使用 Spring Boot 的 Actuator 的入门级,它提供生产就绪功能来帮助您监控和管理您的应用程序 |
2.3、Spring Boot 技术入门启动器
最后,Spring Boot 还包括以下启动器,如果要排除或交换特定的技术方面,可以使用这些启动器:
名字 | 描述 |
---|---|
使用 Jetty 作为嵌入式 servlet 容器的入门器。spring-boot-starter-tomcat 的替代品 | |
使用 Log4j2 进行日志记录的入门级。spring-boot-starter-loggingspring-boot-starter-logging的替代方案 |
|
使用 Logback 进行日志记录的入门级。默认日志记录启动器 |
|
使用 Reactor Netty 作为嵌入式响应式 HTTP 服务器的入门。 |
|
使用 Tomcat 作为嵌入式 servlet 容器的入门。spring-boot-starter-web 使用的默认 servlet 容器启动器 | |
使用 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 。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/81659.html