quarkus
Quarkus – 一个针对OpenJDK HotSpot和GraalVM量身定制的Kubernetes本机Java堆栈,它是从最佳Java库和标准中精制而成的。 –是一个容器优先的框架,针对快速启动时间和低内存消耗进行了优化。 该框架基于许多流行的Java库构建,并且为构建标准REST以及响应式和消息驱动型微服务提供支持。 由于快速的启动时间和较低的内存使用量,Quarkus也可用于在无服务器环境中实现功能。 凭借统一的配置,出色的实时重装功能和工具支持,Quarkus为快速开发应用程序提供了许多可能性。
了解如何开始使用Quarkus和构建PetClinic REST API。
这篇博客文章涵盖:
- 开发环境要求
- 建立新专案
- 使用Java 11开发,构建和运行应用程序
- 使用Postgres和Flyway进行数据源配置
- 分页CRUD服务
- 创建集成测试
- 实时重新加载和调试
- Docker化应用程序(本机和非本机)
关于PetClinic API
我决定重新使用在本博文Spring Boot和Spring Data REST中使用的PetClinic模型。
基本上,它是用于管理虚拟PetClinic的基本CRUD服务:宠物,兽医,来访等。
先决条件
码头工人
Docker将用于运行服务本身的dockerized版本,但也将用于运行PostgreSQL服务器。
带有GraalVM的JDK 11
PetClinic API将使用Java 11构建,因此必须安装JDK 11。 为了构建本机可执行文件,必须存在GraalVM 19.3+,并且由于它是基于OpenJDK 11构建的,因此这将是本教程的最佳选择。 安装(和管理Java SDK的多个版本)最简单的方法是使用SDKMAN!
要支持本机映像,请确保安装所有必需的依赖项。 可以在GraalVM文档中找到更多信息: https ://www.graalvm.org/docs/reference-manual/native-image/
GraalVM官方文档: GraalVM
终奌站
该服务是使用iTerm2和oh-my-zsh在macOS上开发的。 我还将httpie用作默认的HTTP客户端。
IntelliJ
我首选的IDE是IntelliJ,我在从事此项目时就使用了它。
在本文中了解有关我在macOS上使用的工具的更多信息: macOS:(Java)开发人员的基本工具
使用Docker运行PostgreSQL
该应用程序将连接到Postgres服务器,并根据配置文件( dev
, test
, prod
)应用不同的配置。 为此,我们将需要运行三台服务器:每台服务器具有不同的数据库名称,端口和凭据。 为了简化设置,可以利用Docker。
开发数据库
- 创建并运行容器:
$ docker run --name petclinic-db-dev -p 5433 : 5432 -e POSTGRES_DB=petclinic-dev -e POSTGRES_USER=petclinic-dev -e POSTGRES_PASSWORD=petclinic-dev -d postgres:alpine
- 运行先前停止的容器:
$ docker start petclinic-db-dev
测试数据库
- 创建并运行容器:
$ docker run --name petclinic-db-test -p 5434 : 5432 -e POSTGRES_DB=petclinic-test -e POSTGRES_USER=petclinic-test -e POSTGRES_PASSWORD=petclinic-test -d postgres:alpine
- 运行先前停止的容器:
$ docker start petclinic-db-test
产品数据库
- 创建并运行容器:
$ docker run --name petclinic-db -p 5432 : 5432 -e POSTGRES_DB=petclinic -e POSTGRES_USER=petclinic -e POSTGRES_PASSWORD=petclinic -d postgres:alpine
- 运行先前停止的容器:
$ docker start petclinic-db
入门
引导应用程序
您可以在命令行中使用Maven引导应用程序,也可以使用在线生成器。 在线生成器允许探索可以构成Quarkus应用程序的扩展和技术,并且不需要本地Maven安装。 您可以在此处访问生成器: https : //code.quarkus.io
需要以下扩展来构建PetClinic API服务:
- RESTEasy JAX-RS –实现JAX-RS等的REST框架
- RESTEasy Jackson –对RESTEasy的Jackson序列化支持
- SmallRye OpenAPI –使用OpenAPI记录您的REST API – Swagger UI随附
- 带有Panache的Hibernate ORM –在带有Panache的Hibernate ORM中定义持久性模型
- Hibernate Validator –验证进入您的REST端点的数据
- JDBC驱动程序– PostgreSQL – PostgreSQL数据库连接器
- Flyway –处理数据库架构迁移
选择依赖项后,您可以下载zip,解压缩并开始开发服务。
下载的项目具有标准的Maven项目布局。 它包含Maven包装器,因此无需本地Maven安装即可开发项目。 您还会注意到src/main/docker
带有本机和JVM映像的Docker文件。
主配置文件application.properties
位于src/main/resources
。 此文件夹还包含META-INF/resources
文件夹,用于存储应用程序的静态资源,例如index.html
文件。
在
在线生成器默认情况下使用Java 8生成项目,因此要使用Java 11,需要进行一些调整。
- 在生成的项目的
pom.xml
中,更改Java版本:
< maven.compiler.source >11</ maven.compiler.source >
< maven.compiler.target >11</ maven.compiler.target >
- 在
src/main/docker/Dockerfile.jvm
设置ARG JAVA_PACKAGE=java-11-openjdk-headless
在开发模式下运行项目
进行更改后,您可以启动应用程序。 打开终端,导航到项目的文件夹并运行以下命令:
$ ./mvnw compile quark