spring-boot-application-starters

引言

本文主要介绍spring-boot官方提供的常用的starters,对应的spring-boot版本均为1.4.2.RELEASE,官方文档地址为http://docs.spring.io//spring-boot/docs/1.4.2.RELEASE/reference/html/using-boot-build-systems.html#using-boot-starter,官方提供的starters均以spring-boot-starter-开头,第三方提供的starters均以acme-spring-boot-starter开头,当然你也可以自己定义starters。

Database

Name Description Pom
spring-boot-starter-data-redis 集成了Spring Data Redis和redis,redis是一种NoSQL数据库 Pom
spring-boot-starter-data-mongodb 集成了Spring Data MongoDB和mongodb,mongodb是一种NoSQL数据库 Pom
spring-boot-starter-data-neo4j 集成了Spring Data Neo4j和Neo4j,Neo4j是一种图数据库 Pom
spring-boot-starter-data-couchbase 集成了Spring Data Couchbase和Couchbase,couchbase是一种NoSQL数据库 Pom
spring-boot-starter-data-cassandra 集成了Spring Data Cassandra和cassandra,cassandra是一种开源的分布式NOSQL数据库,最早由facebook开发,后捐赠给Apache Pom
spring-boot-starter-data-gemfire 集成了Spring Data GemFire和GemFire,GemFire是一种NoSQL数据库 Pom

Servlet Container

这篇文章解释了什么是一个Servlet Container。目前Servlet Container有很多,详细可以参考维基百科。spring-boot集成了以下几款开源的Servlet Container:

  • tomcat:tomcat是spring-boot默认集成的Servlet Container。
  • undertow:undertow是一款轻量级、灵活的、可嵌入的、并支持Web Socket协议的开源容器。
  • jetty:jetty是一款由eclipse维护的开源容器,目前使用也很广泛。
Name Description Pom
spring-boot-starter-tomcat 是spring-boot-starter-web默认集成的容器 Pom
spring-boot-starter-undertow 集成了undertow Pom
spring-boot-starter-jetty 集成了jetty Pom

Rest

Rest是representational state transfer的缩写,意思是表达性状态转换。Rest是一种架构风格,它包含了一个分布式超文本系统中对于组件、连接器和数据的约束。想了解更多关于Rest点击此处
HATEOAS是Hypermedia as the engine of application state的缩写,意思是超媒体即应用状态引擎。HATEOAS是Rest架构风格中最复杂的约束,也是构建成熟Rest服务的核心。

JAX-RS是Java API for RESTful Web Services的缩写,是一个Java编程语言的应用程序接口,支持按照Rest架构风格创建Web服务。目前已知的JAX-RS有4种,Jersey是其中的一种实现,由Sun开发的产品级质量的JAX-RS的参考实现。当然,Jersey也支持HATEOAS约束。

spring-hateoas和spring-data-rest是spring旗下的两个子项目,spring-data-rest包含了spring-hateoas,虽然spring-hateoas实现了HATEOAS,但是spring-data-rest并没有真正的实现JAX-RS规范。

spring-boot提供了以下几种来快速构建Rest服务:

Name Description Pom
spring-boot-starter-web 默认是支持RESTful的 Pom
spring-boot-starter-hateoas 集成了spring-mvc和spring-hateoas Pom
spring-boot-starter-jersey 集成了spring-mvc和Jersey Pom
spring-boot-starter-data-rest 集成了spring-data-rest和spring-mvc Pom

Socia API

spring-social是spring旗下的一个扩展子项目,
它主要方便你对Facebook,Twitter,LinkedIn等SAAS服务提供的API的一个使用。目前spring-social的最新版本是1.1.4.RELEASE。它有以下几个模块组成:

  • spring-social-web
  • spring-social-config
  • spring-social-core
  • spring-social-security

目前已正式发布支持的有Facebook,Twitter,LinkedIn

  • spring-social-linkedin
  • spring-social-facebook
  • spring-social-twitter

正在孵化的有Github和Tripit

  • spring-social-github
  • spring-social-tripit

spring-boot集成了Facebook,Twitter,LinkedIn

Name Description Pom
spring-boot-starter-social-linkedin 集成了spring-boot-starter-web和spring-social-linkedin Pom
spring-boot-starter-social-facebook 集成了spring-boot-starter-web和spring-social-facebook Pom
spring-boot-starter-social-twitter 集成了spring-boot-starter-web和spring-social-twitter Pom

JTA

JTA是Java Transaction API的缩写,意思是Java事务API,是一个Java企业版的应用程序接口,在Java环境中,允许完成跨越多个XA资源的分布式事务。JTA是在Java社区过程下制定的规范。

目前开源的JTA实现有以下几个:

  • narayana:narayana是jboss下的一款开源的JTA
  • bitronix:bitronix是一款开源的JTA,不过目前已没人维护
  • atomikos:atomikos目前提供了商业版本的维护,但其社区版仍然是开源的。
Name Description Pom
spring-boot-starter-jta-narayana 集成了JTA transactions和narayana Pom
spring-boot-starter-jta-bitronix 集成了JTA transactions和bitronix Pom
spring-boot-starter-jta-atomikos 集成了JTA transactions和atomikos Pom

Template Engine

spring-boot-1.4.2.RELEASE内置支持的模板引擎有
thymeleaf,mustache,groovy,freemarker,velocity。不过从1.4将不再支持velocity。

Name Description Pom
spring-boot-starter-thymeleaf 集成了spring-boot-starter-web和thymeleaf模板引擎 Pom
spring-boot-starter-mustache 集成了spring-boot-starter-web和mustache模板引擎 Pom
spring-boot-starter-groovy-templates 集成了spring-boot-starter-web和groovy-templates模板引擎 Pom
spring-boot-starter-freemarker 集成了spring-boot-starter-web和freemarker模板引擎 Pom
spring-boot-starter-velocity 集成了spring-boot-starter-web和velocity模板引擎 Pom

Logging

目前主流的Java日志框架有log4j,logback和log4j2。spring-boot集成了logback和log4j2。

Name Description Pom
spring-boot-starter-logging 集成logback Pom
spring-boot-starter-log4j2 集成log4j2 Pom

Test

目前主流的Java测试框架有JUnit,Hamcrest和Mockito。spring-boot集成了这三者。

Name Description Pom
spring-boot-starter-test 集成了JUnit,Hamcrest和Mockito Pom

Security

spring-security是spring旗下的一个子项目,支持授权和认证,可以防止session fixation(会话固定)、clickjacking(点击劫持)、cross site request forgery(CSRF)(跨站请求伪造)等攻击。spring-boot集成了spring-security。

Name Description Pom
spring-boot-starter-security 集成了spring-security Pom

MQ

JMS是Java Message Service的缩写,意思是Java消息服务,是一个Java服务中关于面向消息中间件的API,用于在两个应用程序之间或分布式系统中发送消息,进行异步通信。JMS规范包括两种消息模式,点对点和发布者/订阅者,支持同步和异步的消息处理,支持面向事件的方法接收消息。目前主流的开源实现有Apache ActiveMQ和Kafka。

AMQP是Advanced Message Queuing Protocol的缩写,意思是高级消息队列协议,是一个异步消息传递所使用的应用层协议规范。作为线路层协议,而不是API(例如JMS),AMQP客户端能够无视消息的来源任意发送和接受信息。目前主流的开源实现有RabbitMQ。

JMS和AMQP的对比:

JMS AMQP
定义 JAVA API Protocol
跨语言 否 是
跨平台 否 是
消息模型 one to one and publish/subscriber direct, fanout, topic, headers
消息类型 text,map,byte,stream,object byte

spring-boot集成了ActiveMQ和RabbitMQ。

Name Description Pom
spring-boot-starter-activemq 集成ActiveMQ Pom
spring-boot-starter-amqp 集成RabbitMQ Pom

Production Starters

Name Description Pom

参考