支持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>

推荐阅读