Spring Boot starters
Spring Boot 的功能组件(例如 spring-boot-starter-actuator、 spring-boot-starter-data-redis 等)的步骤非常简单,用著名的把大象放冰箱的方法来概括的话,有以下三步就可以完成组件功能的使用:
STEP 1
在 pom 文件中引入对应的包,例如:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
STEP 2
在应用配置文件中加入相应的配置,配置都是组件约定好的,需要查看官方文档或者相关说明。有些比较复杂的组件,对应的参数和规则也相应的较多,有点可能多大几十上百了。
STEP 3
以上两步都正常的情况下,我们就可以使用组件提供的相关接口来开发业务功能了。下面我整理了官方提供的starter.我们来看一看.
1、application starters
应用程序级的 Starters
<table>
<thead>
<tr>
<th>Starter 名称</th>
<th>Starter 描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>spring-boot-starter</td>
<td>核心 Starter,包括自动配置、日志及 YAML 支持等</td>
</tr>
<tr>
<td>spring-boot-starter-activemq</td>
<td>集成 Apache ActiveMQ,基于 JMS 的消息队列</td>
</tr>
<tr>
<td>spring-boot-starter-artemis</td>
<td>集成 Apache Artemis,基于 JMS 的消息队列</td>
</tr>
<tr>
<td>spring-boot-starter-amqp</td>
<td>集成 Spring AMQP 和 Rabbit MQ 的消息队列</td>
</tr>
<tr>
<td>spring-boot-starter-aop</td>
<td>集成 Spring AOP 和 AspectJ 面向切面编程</td>
</tr>
<tr>
<td>spring-boot-starter-batch</td>
<td>集成 Spring Batch(批处理)</td>
</tr>
<tr>
<td>spring-boot-starter-cache</td>
<td>集成 Spring Cache(缓存)</td>
</tr>
<tr>
<td>spring-boot-starter-data-cassandra</td>
<td>集成 Cassandra(分布式数据库) 和 Spring Data Cassandra</td>
</tr>
<tr>
<td>spring-boot-starter-data-cassandra-reactive</td>
<td>集成 Cassandra(分布式数据库) 和 Spring Data Cassandra Reactive</td>
</tr>
<tr>
<td>spring-boot-starter-data-couchbase</td>
<td>集成 Couchbase(文档型数据库) 和 Spring Data Couchbase</td>
</tr>
<tr>
<td>spring-boot-starter-data-couchbase-reactive</td>
<td>集成 Couchbase(文档型数据库) 和 Spring Data Couchbase Reactive</td>
</tr>
<tr>
<td>spring-boot-starter-data-elasticsearch</td>
<td>集成 Elasticsearch(搜索引擎)和 Spring Data Elasticsearch</td>
</tr>
<tr>
<td>spring-boot-starter-data-solr</td>
<td>集成 Apache Solr(搜索引擎)结合 Spring Data Solr</td>
</tr>
<tr>
<td>spring-boot-starter-data-jdbc</td>
<td>集成 Spring Data JDBC</td>
</tr>
<tr>
<td>spring-boot-starter-data-jpa</td>
<td>集成 Spring Data JPA 结合 Hibernate</td>
</tr>
<tr>
<td>spring-boot-starter-data-ldap</td>
<td>集成 Spring Data LDAP</td>
</tr>
<tr>
<td>spring-boot-starter-data-mongodb</td>
<td>集成 MongoDB(文档型数据库)和 Spring Data MongoDB</td>
</tr>
<tr>
<td>spring-boot-starter-data-mongodb-reactive</td>
<td>集成 MongoDB(文档型数据库)和 Spring Data MongoDB Reactive</td>
</tr>
<tr>
<td>spring-boot-starter-data-neo4j</td>
<td>集成 Neo4j(图形数据库)和 Spring Data Neo4j</td>
</tr>
<tr>
<td>spring-boot-starter-data-r2dbc</td>
<td>集成 Spring Data R2DBC</td>
</tr>
<tr>
<td>spring-boot-starter-data-redis</td>
<td>集成 Redis(内存数据库)结合 Spring Data Redis 和 Lettuce 客户端</td>
</tr>
<tr>
<td>spring-boot-starter-data-redis-reactive</td>
<td>集成 Redis(内存数据库)结合 Spring Data Redis reactive 和 Lettuce 客户端</td>
</tr>
<tr>
<td>spring-boot-starter-data-rest</td>
<td>集成 Spring Data REST 暴露 Spring Data repositories 输出 REST 资源</td>
</tr>
<tr>
<td>spring-boot-starter-thymeleaf</td>
<td>集成 Thymeleaf 视图构建 MVC web 应用</td>
</tr>
<tr>
<td>spring-boot-starter-freemarker</td>
<td>集成 FreeMarker 视图构建 MVC web 应用</td>
</tr>
<tr>
<td>spring-boot-starter-groovy-templates</td>
<td>集成 Groovy 模板视图构建 MVC web 应用</td>
</tr>
<tr>
<td>spring-boot-starter-hateoas</td>
<td>集成 Spring MVC 和 Spring HATEOAS 构建超媒体 RESTful Web 应用程序</td>
</tr>
<tr>
<td>spring-boot-starter-integration</td>
<td>集成 Spring Integration</td>
</tr>
<tr>
<td>spring-boot-starter-jdbc</td>
<td>集成 JDBC 结合 HikariCP 连接池</td>
</tr>
<tr>
<td>spring-boot-starter-jersey</td>
<td>集成 JAX-RS 和 Jersey 构建 RESTful web 应用,是 spring-boot-starter-web 的一个替代 Starter</td>
</tr>
<tr>
<td>spring-boot-starter-jooq</td>
<td>集成 jOOQ 访问 SQL 数据库,是 spring-boot-starter-data-jpa 或者 spring-boot-starter-jdbc 的替代 Starter</td>
</tr>
<tr>
<td>spring-boot-starter-json</td>
<td>用于读写 JSON</td>
</tr>
<tr>
<td>spring-boot-starter-jta-atomikos</td>
<td>集成 Atomikos 实现 JTA 事务</td>
</tr>
<tr>
<td>spring-boot-starter-jta-bitronix</td>
<td>集成 Bitronix 实现 JTA 事务( 从 2.3.0 开始标识为 <strong>Deprecated</strong>)</td>
</tr>
<tr>
<td>spring-boot-starter-mail</td>
<td>集成 Java Mail 和 Spring 框架的邮件发送功能</td>
</tr>
<tr>
<td>spring-boot-starter-mustache</td>
<td>集成 Mustache 视图构建 web 应用</td>
</tr>
<tr>
<td>spring-boot-starter-security</td>
<td>集成 Spring Security</td>
</tr>
<tr>
<td>spring-boot-starter-oauth2-client</td>
<td>集成 Spring Security’s OAuth2/OpenID 连接客户端功能</td>
</tr>
<tr>
<td>spring-boot-starter-oauth2-resource-server</td>
<td>集成 Spring Security’s OAuth2 资源服务器功能</td>
</tr>
<tr>
<td>spring-boot-starter-quartz</td>
<td>集成 Quartz 任务调度</td>
</tr>
<tr>
<td>spring-boot-starter-rsocket</td>
<td>构建 RSocket 客户端和服务端</td>
</tr>
<tr>
<td>spring-boot-starter-test</td>
<td>集成 JUnit Jupiter, Hamcrest 和 Mockito 测试 Spring Boot 应用和类库</td>
</tr>
<tr>
<td>spring-boot-starter-validation</td>
<td>集成 Java Bean Validation 结合 Hibernate Validator</td>
</tr>
<tr>
<td>spring-boot-starter-web</td>
<td>集成 Spring MVC 构建 RESTful web 应用,使用 Tomcat 作为默认内嵌容器</td>
</tr>
<tr>
<td>spring-boot-starter-web-services</td>
<td>集成 Spring Web Services</td>
</tr>
<tr>
<td>spring-boot-starter-webflux</td>
<td>集成 Spring Reactive Web 构建 WebFlux 应用</td>
</tr>
<tr>
<td>spring-boot-starter-websocket</td>
<td>集成 Spring WebSocket 构建 WebSocket 应用</td>
</tr>
</tbody>
</table>
用到哪个技术就引用哪个技术的 Starter,Spring Boot 助你快速集成,别再手写配置了。
2、production starters
除了上面的应用程序级 starters,还有下面的生产级 Starters 能被用于线上/生产功能:
<table>
<thead>
<tr>
<th>Starter 名称</th>
<th>Starter 描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>spring-boot-starter-actuator</td>
<td>集成 Spring Boot Actuator,提供生产功能以帮助监控和管理应用程序</td>
</tr>
</tbody>
</table>
这个意味着和任何技术、任何业务没关系,只要用了 Spring Boot 框架,上了生产环境就能使用,也不是只有生产才能使用,只是在生产环境使用更能体验它的意义。
3、technical starters
除了应用程序和生产 Starters,Spring Boot 还包括下面的技术类 Starters,用于帮助你排除或者替换指定的框架或技术:
<table>
<thead>
<tr>
<th>Starter 名称</th>
<th>Starter 描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>spring-boot-starter-jetty</td>
<td>集成 Jetty 作为内嵌的 servlet 容器,可用于替代 spring-boot-starter-tomcat</td>
</tr>
<tr>
<td>spring-boot-starter-log4j2</td>
<td>集成 Log4j2 日志框架,可用于替代 spring-boot-starter-logging</td>
</tr>
<tr>
<td>spring-boot-starter-logging</td>
<td>集成 Logback 日志框架,这个也是默认的日志 Starter</td>
</tr>
<tr>
<td>spring-boot-starter-reactor-netty</td>
<td>集成 Netty 作为内嵌的响应式 HTTP 服务器</td>
</tr>
<tr>
<td>spring-boot-starter-tomcat</td>
<td>集成 Tomcat 作为内嵌的 servlet 容器,这也是默认的 servlet 容器 starter 被集成 spring-boot-starter-web 里面</td>
</tr>
<tr>
<td>spring-boot-starter-undertow</td>
<td>集成 Undertow 作为内嵌的 servlet 容器,可用于替代 spring-boot-starter-tomcat</td>
</tr>
</tbody>
</table>
最新请参考:
结语
随着 Spring Boot 版本的不断升级,后续可能会增加更多的 Starter,当然也有少数 Starter 可能会得到删除。
当然,除了第三方的 Starter,使用 Spring Boot 的公司一般也会有私有定制的 Starter,可以用于在公司内部各业务部门快速集成使用,而不用各自造轮子。