將SpringBoot PetClinic REST遷移到Quarkus的開源專案

banq發表於2020-09-18

SpringBoot PetClinic REST專案的GitHub儲存庫:https://github.com/spring-petclinic/spring-petclinic-rest
Quarkus遷移的專案的GitHub儲存庫:https://github.com/jonathanvila/spring-petclinic-rest/tree/quarkus
 

REST遷移
從Spring REST移到標準JAX-RS註釋。

  1. @RestController --> @Path
  2. @RequestMapping --> 將其分解為下一個註釋
  3. @GetMapping --> @GET
  4. @PostMapping --> @POST
  5. @PutMapping --> @PUT
  6. @DeleteMapping -> @DELETE
  7. @PathVariable -> @PathParam

 

安全遷移

  • @PreAuthorize("hasRole(@roles.ROLE_ADMIN)") 替換為
  • @RolesAllowed("ROLE_ADMIN")

新增Elytron擴充套件以在資料庫中保持安全性:quarkus-elytron-security-JDBC擴充套件。在properties.file上配置這個新的副檔名
 

CORS
在application.properties檔案中配置的CORS
 

指標

  1. 新增smallRye指標擴充套件
  2. 註釋每種方法(用於自定義指標)
  3. 在屬性檔案中啟用hibernate指標

 

驗證方法遷移

  1. 將Spring驗證器遷移到Hibernate驗證器
  2. 從@ControllerAdvice移至JAX-RS ExceptionMapper

 

OpenAPI檔案

  1. 新增副檔名“ openapi”
  2. 擴充套件應用程式類

 

本地快取遷移

  1. Spring使用預設的ConcurrentHashMap
  2. Caffeine使用ConcurrentLinkedHashMap
  3. 新增“快取”副檔名(Caffeine)並註釋該方法
  4. 在屬性檔案中配置每個快取行為

 

未遷移

  • Spring JDBC查詢
    • 沒有輔助方法可用於插入,更新
    • 不等同於org.springframework.jdbc.core類
    • 我們需要使用AGROAL重新實現所有功能
  • JMX
    • GraalVM定義不支援

 
遷移後效能比較:


         Spring Boot    Quarkus Hotspot    Quarkus GraalVM
構建       48 MB         42 MB           97 MB
          4.3 s         13 s            185 s 
     
啟動       630 MB        251 MB          21 MB
          6.8 s         2.6 s           0.462 s

 

相關文章