準(zhǔn)備篇-與SpringBoot不同

對(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媒體類型

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容