對(duì)標(biāo)準(zhǔn)的支持
由于標(biāo)準(zhǔn)的滯后性,Spring與標(biāo)準(zhǔn)部分不完全一致,有部分內(nèi)容是Spring自己實(shí)現(xiàn)的。
比如CDI部分
Spring使用Autowired,包名是org.springframework.beans.factory.annotation,是Spring私有實(shí)現(xiàn)
Quarkus使用Inject,包名是javax.inject,是javax的標(biāo)準(zhǔn)實(shí)現(xiàn)
*Quarkus使用CDI標(biāo)準(zhǔn)(實(shí)現(xiàn)大部分規(guī)范),為了使用GraalVM構(gòu)建原生執(zhí)行文件,Quarkus鼓勵(lì)用戶不要在Bean中使用私有成員。
比如REST部分
Quarkus使用JAX-RS
對(duì)響應(yīng)式支持
Spring相對(duì)滯后,需要Spring WebFlux
Quarkus原生支持,通過(guò)Vert.x底層支持
對(duì)GraalVM支持
Spring相對(duì)滯后,需要Spring Native
Quarkus原生支持,通過(guò)GraalVM底層支持
對(duì)容錯(cuò)的支持
包括重試,超時(shí),熔斷,
Spring需要其他組件支持
Quarkus原生支持
Quarkus特色
支持多種打包方式,比如:fast-jar,uber-jar,native,在application.properties中通過(guò)quarkus.package.type=[fast-jar|uber-jar]指定打包方式
fast-jar: 編譯后的jar僅包含了項(xiàng)目編譯的類和資源文件,是不可執(zhí)行的jar,quarkus-app?目錄中包含了可執(zhí)行的 jar文件quarkus-run.jar,依賴庫(kù)都位于?lib目錄中
uber-jar: 編譯后只有一個(gè)jar,可以直接運(yùn)行
關(guān)于注解
JAX-RS是Java API for RESTful Web Services,JAX-RS提供了一些注解將一個(gè)資源類,一個(gè)POJO Java類,封裝為Web資源。
REST URL通用格式<http>://<host>:<port>/<path>?<query>#<frag>
[JAX-RS ]@Path,標(biāo)注資源類或者方法的相對(duì)路徑
[JAX-RS? ? ?]@PathParam,從<path>中獲取參數(shù),支持正則,URL的路徑
[SPRING? ? ]@PathVariable
[QUARKUS]@PathParam,@RestPath
[JAX-RS? ? ?]@QueryParam,從<query>中獲取參數(shù),URL的查詢參數(shù)
[SPRING? ? ]@RequestParam
[QUARKUS]@QueryParam,@RestQuery
[JAX-RS? ? ?]@HeaderParam,從<header>中獲取參數(shù),HTTP請(qǐng)求的頭信息
[SPRING? ? ]@RequestHeader
[QUARKUS]@HeaderParam,@RestHeader
[JAX-RS? ? ?]@CookieParam,從<cookie>中獲取參數(shù),HTTP請(qǐng)求的Cookie
[SPRING? ? ]@CookieValue
[QUARKUS]@CookieParam,@RestCookie
[JAX-RS? ? ?]@MatrixParam,從<http>中獲取參數(shù)
[SPRING? ? ]@MatrixVariable
[QUARKUS]@MatrixPara,@RestMatrix
[JAX-RS? ? ?]@FormParam,從<form>中獲取參數(shù)
[SPRING? ? ]@ModelAttribute
[QUARKUS]@FormParam,@RestForm
*quarkus對(duì)應(yīng)注解分別是普通請(qǐng)求和reactive請(qǐng)求
普通請(qǐng)求包:org.jboss.resteasy.annotations.jaxrs
響應(yīng)式包:org.jboss.resteasy.reactive
@GET,@PUT,@POST,@DELETE,標(biāo)注方法是HTTP請(qǐng)求的類型。
@Produces,標(biāo)注返回的MIME媒體類型
@Consumes,標(biāo)注可接受請(qǐng)求的MIME媒體類型