支持JDK19虛擬線程的web框架,之二:完整開發一個支持虛擬線程的quarkus應用( 二 )


支持JDK19虛擬線程的web框架,之二:完整開發一個支持虛擬線程的quarkus應用

文章插圖
  • 點擊上圖右下角的Create按鈕后項目開始創建,稍作等待,項目創建完成,如下圖,此刻只能感慨:quarkus太貼心,不但有demo源碼 , 還有各種版本的Dockerfile文件,而且git相關的配置也有,甚至README.md都寫得那么詳細,我是不是可以點擊運行按鈕直接把程序run起來了

支持JDK19虛擬線程的web框架,之二:完整開發一個支持虛擬線程的quarkus應用

文章插圖
IDEA設置
  • 由于要用到JDK19,下面幾項設置需要檢查并確認
  • 首先是Project設置 , 如下圖

支持JDK19虛擬線程的web框架,之二:完整開發一個支持虛擬線程的quarkus應用

文章插圖
  • 其次是Modules設置,先配置Sources這個tab頁

支持JDK19虛擬線程的web框架,之二:完整開發一個支持虛擬線程的quarkus應用

文章插圖
  • 接下來是Dependencies這個tab頁

支持JDK19虛擬線程的web框架,之二:完整開發一個支持虛擬線程的quarkus應用

文章插圖
  • 進入IDEA系統設置菜單

支持JDK19虛擬線程的web框架,之二:完整開發一個支持虛擬線程的quarkus應用

文章插圖
  • 如下圖 , 三個位置需要設置

支持JDK19虛擬線程的web框架,之二:完整開發一個支持虛擬線程的quarkus應用

文章插圖
  • 設置完成了,接下來開始編碼
編碼
  • 首先確認pom.xml,這是IDEA幫我們創建的,內容如下,有兩處改動稍后會說到
<?xml version="1.0"?><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><groupId>com.bolingcavalry</groupId><artifactId>quarkus-virual-threads-demo</artifactId><version>1.0-SNAPSHOT</version><properties><compiler-plugin.version>3.8.1</compiler-plugin.version><maven.compiler.release>19</maven.compiler.release><maven.compiler.source>19</maven.compiler.source><maven.compiler.target>19</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id><quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id><quarkus.platform.version>2.13.2.Final</quarkus.platform.version><skipITs>true</skipITs><surefire-plugin.version>3.0.0-M7</surefire-plugin.version></properties><dependencyManagement><dependencies><dependency><groupId>${quarkus.platform.group-id}</groupId><artifactId>${quarkus.platform.artifact-id}</artifactId><version>${quarkus.platform.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-resteasy-reactive-jackson</artifactId></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-reactive-pg-client</artifactId></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-arc</artifactId></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-resteasy-reactive</artifactId></dependency><!-- 生成測試數據 --><dependency><groupId>net.datafaker</groupId><artifactId>datafaker</artifactId><version>1.6.0</version></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-junit5</artifactId><scope>test</scope></dependency><dependency><groupId>io.rest-assured</groupId><artifactId>rest-assured</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>${quarkus.platform.group-id}</groupId><artifactId>quarkus-maven-plugin</artifactId><version>${quarkus.platform.version}</version><extensions>true</extensions><executions><execution><goals><goal>build</goal><goal>generate-code</goal><goal>generate-code-tests</goal></goals></execution></executions><!-- 這里是新增的虛擬線程相關特性,start --><configuration><source>19</source><target>19</target><compilerArgs><arg>--enable-preview</arg></compilerArgs><jvmArgs>--enable-preview --add-opens java.base/java.lang=ALL-UNNAMED</jvmArgs></configuration><!-- 這里是新增的虛擬線程相關特性,end --></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>${compiler-plugin.version}</version><configuration><compilerArgs><arg>-parameters</arg></compilerArgs></configuration></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>${surefire-plugin.version}</version><configuration><systemPropertyVariables><java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager><maven.home>${maven.home}</maven.home></systemPropertyVariables></configuration></plugin><plugin><artifactId>maven-failsafe-plugin</artifactId><version>${surefire-plugin.version}</version><executions><execution><goals><goal>integration-test</goal><goal>verify</goal></goals><configuration><systemPropertyVariables><native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path><java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager><maven.home>${maven.home}</maven.home></systemPropertyVariables></configuration></execution></executions></plugin></plugins></build><profiles><profile><id>native</id><activation><property><name>native</name></property></activation><properties><skipITs>false</skipITs><quarkus.package.type>native</quarkus.package.type></properties></profile></profiles></project>

推薦閱讀