(四)SpringBoot起步依赖Starters详解

  Starters是一个依赖描述符的集合,你可以将它包含进项目中,这样添加依赖就非常方便。你可以获取所有Spring及相关技术的一站式服务,而不需要翻阅示例代码,拷贝粘贴大量的依赖描述符。例如,如果你想使用Spring和JPA进行数据库访问,只需要在项目中包含 spring-boot-starter-data-jpa 依赖,然后你就可以开始了。该starters包含很多搭建,快速运行项目所需的依赖,并提供一致的,可管理传递性的依赖集。名字有什么含义:所有官方starters遵循相似的命名模式: spring-boot-starter-* ,在这里 * 是一种特殊的应用程序类型。该命名结构旨在帮你找到需要的starter。很多集成于IDEs中的Maven插件允许你通过名称name搜索依赖。例如,使用相应的Eclipse或STS插件,你可以简单地在POM编辑器中点击 ctrl-space ,然后输入"spring-boot-starter"就可以获取一个完整列表。正Creating your own starter章节中讨论的,第三方starters不应该以 spring-boot 开头,因为它跟Spring Boot官方artifacts冲突。一个acme的第三方starter通常命名为 acme-spring-boot-starter 。

 一 以下应用程序starters是Spring Boot在 org.springframework.boot group下提供的:


名称 描述
Spring-boot- starter-test 用于测试 Spring Boot应用,支持常用测试类库,包 括JUnit, Hamcrest和Mockito
Spring-boot- starter-mobile 用于使用Spring Mobile开发web应用
Spring-boot- starter-social- twitter 对使用Spring Social Twitter的支持
Spring-boot- starter-cache 用于使用Spring框架的缓存支持
Spring-boot- starter-activemq 用于使用Apache ActiveMQ实现JMS消息
Spring-boot- starter-jta- atomikos 用于使用Atomikos实现JTA事务
Spring-boot- starter-aop 用于使用Spring AOP和AspectJ实现面向切面编程
Spring-boot- starter-web 用于使用Spring MVC构建web应用,包括 RESTful。Tomcat是默认的内嵌容器
Spring-boot- starter-data- elasticsearch 用于使用Elasticsearch搜索,分析引擎和 Spring Data Elasticsearch
Spring-boot- starter-jdbc 对JDBC的支持(使用Tomcat JDBC连接池)
Spring-boot- starter-batch 对Spring Batch的支持
Spring-boot- starter-social- facebook 用于使用Spring Social Facebook
Spring-boot- starter-web- services 对Spring Web服务的支持
Spring-boot- starter-jta- narayana Spring Boot Narayana JTA Starter
Spring-boot- starter- thymeleaf 用于使用Thymeleaf模板引擎构建MVC web应用
Spring-boot- starter-mail 用于使用Java Mail和Spring框架email发送支持
Spring-boot- starter-jta- bitronix 用于使用Bitronix实现JTA事务
Spring-boot- starter-data- mongodb 用于使用基于文档的数据库MongoDB和Spring Data MongoDB
Spring-boot- starter- validation 用于使用Hibernate Validator实现Java Bean校验
Spring-boot- starter-jooq 用于使用JOOQ访问SQL数据库,可使用Spring- boot-starter-data-jpa或Spring-boot-starter-jdbc替代
Spring-boot- starter-redis 用于使用Spring Data Redis和Jedis客户端操作键- 值存储的Redis,在1.4中已被Spring-boot-starter- data-redis取代
Spring-boot- starter-data- cassandra 用于使用分布式数据库Cassandra和Spring Data Cassandra
Spring-boot- starter-hateoas 用于使用Spring MVC和Spring HATEOAS实现基于 超媒体的RESTful web应用
Spring-boot- starter- integration 用于使用Spring Integration
Spring-boot- starter-data-solr 通过Spring Data Solr使用Apache Solr搜索平台
Spring-boot- starter- freemarker 用于使用FreeMarker模板引擎构建MVC web应用
Spring-boot- starter-jersey 用于使用JAX-RS和Jersey构建RESTful web应用, 可使用Spring-boot-starter-web替代
Spring-boot- starter 核心starter,包括自动配置支持,日志和YAML
Spring-boot- starter-data- couchbase 用于使用基于文档的数据库Couchbase和Spring Data Couchbase
Spring-boot- starter-artemis 使用Apache Artemis实现JMS消息
Spring-boot- starter-cloud- connectors 对Spring Cloud Connectors的支持,用于简化云平 台下(例如Cloud Foundry 和Heroku)服务的连接
Spring-boot- starter-social- linkedin 用于使用Spring Social LinkedIn
Spring-boot- starter-velocity 用于使用Velocity模板引擎构建MVC web应用,从 1.4版本过期
Spring-boot- starter-data-rest 用于使用Spring Data REST暴露基于REST的Spring Data仓库
Spring-boot- starter-data-gemfire 用于使用分布式数据存储GemFire和Spring Data GemFire的初学者
Spring-boot- starter-groovy- templates 用于使用Groovy模板引擎构建MVC web应用
Spring-boot- starter-amqp 用于使用Spring AMQP和Rabbit MQ
Spring-boot- starter-hornetq 用于使用HornetQ实现JMS消息,被Spring-boot- starter-artemis取代
Spring-boot- starter-ws 用于使用Spring Web服务,被Spring-boot-starter- web-services取代
Spring-boot- starter-security 对Spring Security的支持
Spring-boot- starter-data- redis 用于使用Spring Data Redis和Jedis客户端操作键 —值数据存储Redis
Spring-boot- starter- websocket 用于使用Spring框架的WebSocket支持构建 WebSocket应用
Spring-boot- starter- mustache 用于使用Mustache模板引擎构建MVC web应用
Spring-boot- starter-data- neo4j 用于使用图数据库Neo4j和Spring Data Neo4j
Spring-boot- starter-data-jpa 用于使用Hibernate实现Spring Data JPA

二、除了应用程序starters,以下starters可用于添加production ready的功能:
Spring Boot生产级starters
Spring-boot- starter-actuator 用于使用Spring Boot的Actuator,它提供了 production ready功能来帮助你监控和管理应用程序
Spring-boot- starter-remote- shell 用于通过SSH,使用CRaSH远程shell监控,管理你的应用

三、最后,Spring Boot还包含一些用于排除或交换某些特定技术方面的starters:
Spring Boot技术性starters

Spring-boot- starter-undertow 用于使用Undertow作为内嵌servlet容器,可使用Spring-boot-starter-tomcat替代
Spring-boot- starter-logging 用于使用Logback记录日志,默认的日志starter
Spring-boot- starter-tomcat 用于使用Tomcat作为内嵌servlet容器,
Spring- boot-starter-web 使用的默认servlet容器
Spring-boot- starter-jetty 用于使用Jetty作为内嵌servlet容器,可使用Spring- boot-starter-tomcat替代
Spring-boot- starter-log4j2 用于使用Log4j2记录日志,可使用Spring-boot- starter-logging代替

注:查看GitHub上位于Spring-boot-starters 模块内的README文件,可以获 取到一个社区贡献的其他starters列表。

  四、覆盖起步依赖引入的传递依赖
在Maven里,可以用<exclusions>元素来排除传递依赖。下面这个引入Spring Boot的build.gradle的<dependency>增加了<exclusions>元素去除Jackson:
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId> 30 第 2 章 开发第一个应用程序
    <exclusions>
      <exclusion>
      <groupId>com.fasterxml.jackson.core</groupId>
      </exclusion>
    </exclusions>
  </dependency>
另一方面,也许项目需要Jackson,但你需要用另一个版本的Jackson来进行构建,而不是Web起步依赖里的那个。假设Web起步依赖引用了Jackson 2.3.4,但你需要使用2.4.3。在Maven里,你可以直接在pom.xml中表达诉求,就像这样:
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.4.3</version>
  </dependency>
Maven总是会用最近的依赖,也就是说,你在项目的构建说明文件里增加的这个依赖,会覆盖传递依赖引入的另一个依赖。
posted @ 2019-11-22 23:40  跃小云  阅读(1056)  评论(0编辑  收藏  举报