<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          5分鐘擁抱云原生 | SpringBoot 遷移至 Quarkus

          共 1521字,需瀏覽 4分鐘

           ·

          2021-01-15 22:36

          Quarkus 是一個(gè)目前非常火的 Java 應(yīng)用開(kāi)發(fā)框架,定位是輕量級(jí)的微服務(wù)框架。,Quarkus 提供了優(yōu)秀的容器化整合能力,相較于傳統(tǒng)開(kāi)發(fā)框架(Spring Boot)有著更快的啟動(dòng)速度、更小的內(nèi)存消耗、更短的服務(wù)響應(yīng)。

          Quarkus 性能對(duì)比圖

          本文將演示將 SpringBoot 應(yīng)用遷移至 Quarkus

          Spring Boot 示例程序

          使用 JPA 完成 數(shù)據(jù)庫(kù)的增刪改查操作,基礎(chǔ)代碼如下

          • maven 依賴(lài)
          <dependency>
          ??<groupId>org.springframework.bootgroupId>
          ??<artifactId>spring-boot-starter-data-jpaartifactId>
          dependency>
          <dependency>
          ??<groupId>org.springframework.bootgroupId>
          ??<artifactId>spring-boot-starter-webartifactId>
          dependency>
          • jpa crud
          public?interface?DemoUserDao?extends?CrudRepository?{
          }

          遷移至 Quarkus

          • quarkus-bom 管理了全部 quarkus 插件 maven 版本信息,引入后所有依賴(lài)不需要再定義版本。

          ?<dependencyManagement>
          ??<dependencies>
          ???<dependency>
          ????<groupId>io.quarkusgroupId>
          ????<artifactId>quarkus-bomartifactId>
          ????<version>1.10.5.Finalversion>
          ????<type>pomtype>
          ????<scope>importscope>
          ???dependency>
          ??dependencies>
          ?dependencyManagement>
          • 遷移 spring-web 、spring-jpa 至 quarkus 技術(shù)棧。
          <dependency>
          ??<groupId>io.quarkusgroupId>
          ??<artifactId>quarkus-spring-data-jpaartifactId>
          dependency>
          <dependency>
          ??<groupId>io.quarkusgroupId>
          ??<artifactId>quarkus-spring-webartifactId>
          dependency>
          • 配置文件調(diào)整 (還是在 application.yml)
          quarkus.datasource.db-kind=mysql
          quarkus.datasource.jdbc.driver=com.mysql.cj.jdbc.Driver
          quarkus.datasource.username=root
          quarkus.datasource.password=root
          quarkus.datasource.jdbc.url=jdbc:mysql://localhost:3306/pig_demo?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE
          • Main 方法調(diào)整為 實(shí)現(xiàn) QuarkusApplication ,且需要通過(guò) Quarkus.waitForExit() 保持服務(wù)運(yùn)行。
          @QuarkusMain
          public?class?SimpleApplication?implements?QuarkusApplication?{
          ?public?static?void?main(String[]?args)?{
          ??Quarkus.run(SimpleApplication.class,args);
          ?}
          ?@Override
          ?public?int?run(String...?args)?{
          ??Quarkus.waitForExit();
          ??return?0;
          ?}
          }

          啟動(dòng)運(yùn)行

          main 方法啟動(dòng), 輸出 Quarkus banner

          __??____??__??_____???___??__?____??______
          ?--/?__?\/?/?/?/?_?|?/?_?\/?//_/?/?/?/?__/
          ?-/?/_/?/?/_/?/?__?|/?,?_/?,--\___\_\____/_/?|_/_/|_/_/|_|\____/___/
          2021-01-12?22:31:46,341?INFO??[io.qua.arc.pro.BeanProcessor]?(build-21)?Found?unrecommended?usage?of?private?members?(use?package-private?instead)?in?application?beans:
          ?-?@Inject?field?com.example.simple.controller.DemoController#userDao
          2021-01-12?22:31:48,702?INFO??[io.quarkus]?(Quarkus?Main?Thread)?Quarkus?1.10.5.Final?on?JVM?started?in?4.613s.?Listening?on:?http://localhost:8080
          2021-01-12?22:31:48,703?INFO??[io.quarkus]?(Quarkus?Main?Thread)?Profile?dev?activated.?Live?Coding?activated.
          2021-01-12?22:31:48,703?INFO??[io.quarkus]?(Quarkus?Main?Thread)?Installed?features:?[agroal,?cdi,?hibernate-orm,?hibernate-orm-panache,?mutiny,?narayana-jta,?resteasy,?resteasy-jackson,?smallrye-context-propagation,?spring-data-jpa,?spring-di,?spring-web]

          非常重要的是輸出了當(dāng)前已經(jīng)安裝的功能

          Installed?features:?[agroal,?cdi,?hibernate-orm,?hibernate-orm-panache,?mutiny,?narayana-jta,?resteasy,?resteasy-jackson,?smallrye-context-propagation,?spring-data-jpa,?spring-di,?spring-web]

          【擴(kuò)展】 actuator 監(jiān)控遷移

          • 添加以下依賴(lài)

          ??io.quarkus
          ??quarkus-smallrye-health

          • 指定訪(fǎng)問(wèn)監(jiān)控?cái)帱c(diǎn)路徑
          quarkus.smallrye-health.root-path=/actuator/health

          • 訪(fǎng)問(wèn)監(jiān)控檢查斷點(diǎn)測(cè)試
          ?curl?http://localhost:8080/actuator/health
          {
          ????"status":?"UP",
          ????"checks":?[
          ????????{
          ????????????"name":?"Database?connections?health?check",
          ????????????"status":?"UP"
          ????????}
          ????]
          }?

          【擴(kuò)展】Flyway 遷移

          • 添加 quarkus flyway 插件

          ??io.quarkus
          ??quarkus-flyway

          • 指定插件啟動(dòng)策略即可
          quarkus.flyway.migrate-at-start=true

          往期推薦

          SpringCloud LoadBalancer灰度策略實(shí)現(xiàn)

          伊爾福德站正式通車(chē)!Spring Cloud 2020 發(fā)布

          「Spring Boot 新特性」節(jié)省95%內(nèi)存占用

          「2020封箱」Spring Boot 2.4.1 發(fā)布

          Spring Boot 2.4.0 正式發(fā)布,全面擁抱云原生



          瀏覽 68
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  抽插逼| 青青青草视频在线观看 | 久久久无码成人电影 | 怕怕怕视频大全 | 狠狠躁日日躁夜夜躁av |