准备篇-与SpringBoot不同

对标准的支持

由于标准的滞后性,Spring与标准部分不完全一致,有部分内容是Spring自己实现的。

比如CDI部分
Spring使用Autowired,包名是org.springframework.beans.factory.annotation,是Spring私有实现
Quarkus使用Inject,包名是javax.inject,是javax的标准实现
*Quarkus使用CDI标准(实现大部分规范),为了使用GraalVM构建原生执行文件,Quarkus鼓励用户不要在Bean中使用私有成员。

比如REST部分
Quarkus使用JAX-RS

对响应式支持

Spring相对滞后,需要Spring WebFlux
Quarkus原生支持,通过Vert.x底层支持

对GraalVM支持

Spring相对滞后,需要Spring Native
Quarkus原生支持,通过GraalVM底层支持

对容错的支持

包括重试,超时,熔断,
Spring需要其他组件支持
Quarkus原生支持

Quarkus特色

支持多种打包方式,比如:fast-jar,uber-jar,native,在application.properties中通过quarkus.package.type=[fast-jar|uber-jar]指定打包方式

fast-jar: 编译后的jar仅包含了项目编译的类和资源文件,是不可执行的jar,quarkus-app 目录中包含了可执行的 jar文件quarkus-run.jar,依赖库都位于 lib目录中
uber-jar: 编译后只有一个jar,可以直接运行

关于注解

JAX-RS是Java API for RESTful Web Services,JAX-RS提供了一些注解将一个资源类,一个POJO Java类,封装为Web资源。

REST URL通用格式://:/?#

[JAX-RS ]@Path,标注资源类或者方法的相对路径

[JAX-RS     ]@PathParam,从中获取参数,支持正则,URL的路径
[SPRING    ]@PathVariable
[QUARKUS]@PathParam,@RestPath

[JAX-RS     ]@QueryParam,从中获取参数,URL的查询参数
[SPRING    ]@RequestParam
[QUARKUS]@QueryParam,@RestQuery

[JAX-RS     ]@HeaderParam,从

中获取参数,HTTP请求的头信息
[SPRING    ]@RequestHeader
[QUARKUS]@HeaderParam,@RestHeader

[JAX-RS     ]@CookieParam,从中获取参数,HTTP请求的Cookie
[SPRING    ]@CookieValue
[QUARKUS]@CookieParam,@RestCookie

[JAX-RS     ]@MatrixParam,从中获取参数
[SPRING    ]@MatrixVariable
[QUARKUS]@MatrixPara,@RestMatrix

[JAX-RS     ]@FormParam,从

中获取参数
[SPRING    ]@ModelAttribute
[QUARKUS]@FormParam,@RestForm

*quarkus对应注解分别是普通请求和reactive请求
普通请求包:org.jboss.resteasy.annotations.jaxrs
响应式包:org.jboss.resteasy.reactive

@GET,@PUT,@POST,@DELETE,标注方法是HTTP请求的类型。
@Produces,标注返回的MIME媒体类型
@Consumes,标注可接受请求的MIME媒体类型

你可能感兴趣的:(准备篇-与SpringBoot不同)