使用Quarkus配置文件
使用Quarkus作为一个反应式框架,对Java用户来说是可以接受的,也是有吸引力的。它具有令人兴奋的特性,如热重载、反应式程序开发能力、快速启动和重启时间、MicroProfile规范支持等等。
在这篇文章中,人们将能够了解到Quarkus配置文件。这些是设置的集合,可以分配一个特定的标签来快速访问它们。然而,访问取决于当前使用的环境。
先决条件
要想继续学习文章中的代码示例和解释,需要以下条件。
- 在机器上安装最新的Java开发工具包。本文使用的是第17版。
- 一个好的Java IDE。本文使用[IntelliJ]版本
2021.2.2。 - 结构化查询语言(SQL)的基本概念。
- 一个强大的互联网连接。互联网是用来获取索引,以便快速开发和生成项目。
请务必跟进上述技术的最新版本。应用程序的外观可能根据发布日期而有所不同。
主要启示
文章跟进结束后,需要吸收的一些要点包括。
- 什么是Quarkus配置文件?
- 配置文件的重要性。
- 在Quarkus中设置配置文件的一些方法。其中包括在
application.properties和'YAML'文件中设置配置文件。 - 在开发阶段轻松地浏览所设置的配置文件。
什么是Quarkus配置文件?
Quarkus,像其他MicroProfile一样,遵循MicroProfile规范。它允许开发者无缝地设置项目中发现的变量,并在不同的生命周期中在项目范围内访问它们。
项目的设置通常存储在application.properties 文件中。此外,开发人员可以在main 文件夹中找到该文件,即resources 文件夹。开发人员可以设置的一些变量包括指出数据源,如postgresql或mysql,数据源属性和设置,如用户名、密码、url和访问端口等等。
配置文件可以保存应用程序运行过程中需要的变量。这些可以包括与主要应用源代码文件隔离的变量。因此,这些变量可以在以后只在需要时被注入到应用程序中。开发人员喜欢用配置文件来设置整个系统的属性和环境变量。
Quarkus的配置文件就像一个容器,可以容纳整个应用程序中或项目生命周期中某一阶段的设置和变量。它们可以包含一个或多个变量和设置。当使用时,例如在一个阶段,它们会覆盖之前设置的类似设置或变量数据。
设置这些配置文件是有利的,因为人们可以在应用程序处于不同的开发阶段时快速切换。例如,从开发到测试,从测试到生产。配置之间的切换不需要额外的设置。框架会自动为你进行切换。
检查和配置应用程序的属性
在这一节中,Quarkus项目的配置将被展示。为了能够在Quarkus中配置应用程序的属性,请执行以下操作。
创建一个新的Quarkus项目
打开IntelliJ(或任何其他IDE),点击创建一个新项目。选择Quarkus作为要使用的框架。然后,如下面的图片所示进行设置。

设置以下内容为其依赖项。

另一种方法是使用Quarkus项目初始化网站。
项目结构
新创建的应用程序目录结构如下图所示。
.
├── quarkus-config-profiles
│ └── src
│ ├── main
│ ├── docker
│ ├── java
│ └── resources
│ └── META-INF
│ ├── resources
│ └── application.properties
│ └── test
│ ├── .dockerignore
│ ├── .gitignore
│ ├── mvnw
│ ├── mvnw.cmd
│ ├── pom.xml
│ ├── quarkus-config-profiles.iml
│ └── README.md
找到位于主文件夹的application.properties 文件,如下图所示。

该文件是用于开发、测试和生产阶段的整体应用。
使用下面的命令运行该应用程序。
./mvnw compile quarkus:dev
如果使用上面的命令不能运行,请尝试。
mvn compile quarkus:dev
正如所见,该应用程序默认在端口8080运行。通过一个新的独立终端访问该应用程序,使用。
curl http://localhost:8080/hello
设置一些配置
打开application.properties 文件。接下来,继续并编辑它,如下。
- 将接收请求和发出响应的HTTP端口从普通的
8080,设置为端口8081。 - 数据源的种类。在这种情况下,它将是PostgreSQL。
- 数据库凭证(用户名和密码)。
- JDBC URL。这个URL总是被用来连接应用程序和数据库。
- Hibernate-ORM数据库生成属性。这个属性提供了一个完整的对象关系映射器支持。
- 要在控制台中显示的日志类型。这将是INFO类型的。
这个步骤显示在下面的代码中。
# Global
# Normal configurations
quarkus.http.port=8081
quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=username
quarkus.datasource.password=password
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/my_db
quarkus.log.console.level=INFO
测试配置
重新启动应用程序并检查它在哪个端口上运行。
注意它是在新设置的端口上运行的。
在一个新的终端上,使用下面的代码访问该应用程序。
curl http://localhost:8081/hello
使用Quarkus配置文件配置应用程序
通过下面的步骤实现。
- [学习如何设置配置格式]。
- 设置配置文件。
- 测试设置的配置配置文件。
Quarkus的配置配置文件格式
Quarkus的可用配置文件有三种。它们是
- dev: 这只在开发阶段有效。例如,当执行
./mvnw compile quarkus:dev. - test:它的应用处于测试阶段。例如,当执行
./mvnw compile quarkus:test。 - prod:它只在生产阶段活动。例如,当执行
./mvnw package。最后,开发人员将把这些设置应用到操作环境中使用的打包的应用程序。
Quarkus默认识别上述的配置文件。然而,这并不意味着除了上面提到的三个配置文件之外,添加其他可定制的配置文件是不可能的。这种方法将在后面展示。
配置文件有一个特殊的格式,以使它们能够被识别并与其他文件分开。它以百分比或模数符号(%)开始,然后是配置文件名称和变量或设置。最后,这些将由一个句号(.)分开。最后将以要保持的值结束。
这种格式看起来如下。
# An example of a configuration profile format
%{quarkus-profile-name}.configuration=value
%{quarkus-profile-name}.variable=value
因此,例如,如果它是在开发配置文件下,它可以是。
%dev.quarkus.http.port=8082
这覆盖了默认或全局配置中的一个。因此,在开发阶段,HTTP访问端口将被8082 。
使用默认的配置文件
要在应用程序中使用以下内容,请复制并粘贴到application.properties 文件中。
# Global
# Normal configurations
quarkus.http.port=8081
quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=username
quarkus.datasource.password=password
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/my_db
quarkus.log.console.level=INFO
# Development configuration profile
%dev.quarkus.http.port=8082
%dev.quarkus.log.console.level=ALL
# Testing environment configuration profile
%test.quarkus.http.port=9090
%test.quarkus.log.console.level=DEBUG
%test.quarkus.datasource.db-kind=postgresql
%test.quarkus.datasource.username=username
%test.quarkus.datasource.password=password
%test.quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/my_db
%test.quarkus.http.access-log.enabled=true
# Production configuration profiles. This is mainly used for the final package before deployment
%prod.quarkus.package.type=uber-jar
%prod.quarkus.http.port=8085
开发模式
现在在开发模式下使用开发配置文件运行应用程序。通过在终端运行这段代码来做到这一点。
./mvnw compile quarkus:dev
在日志中注意到,应用程序在端口8082上运行。
通过在另一个单独的终端上运行以下命令来访问它。
curl http://localhost:8082/hello
测试模式
运行下面的命令。
./mvnw compile quarkus:test
生产模式
这些设置将允许应用程序被打包成'uber-jar'文件类型。uber-jar文件有其所有的依赖关系,不像典型的jar文件,它的依赖关系在一个单独的位置。
运行下面的命令。
./mvnw package
检查'目标'文件夹内的打包文件。通过执行下面的命令来运行这个jar文件。
java -jar target/quarkus-config-profiles-1.0-SNAPSHOT-runner.jar
人们可以通过以下方式访问这个正在运行的应用程序。
curl http://localhost:8085/hello
人们还可以根据那些可用的数据源来改变数据源。
例如,人们可以选择H2 ,而不是Postgres或任何其他的需要。开发人员可以为不同的配置文件设置不同的数据源。
例如,可以在开发阶段使用本地数据库服务器运行应用程序,而在生产模式下部署使用远程数据库的打包应用程序。
使用用户定义的配置文件
使用与上面所示相同的格式来完成。例如,对于一个名称为 "prototype "的配置文件,在其他配置文件下,做如下操作。
# Prototype stage
%prototype.quarkus.http.port=9095
%prototype.quarkus.log.console.level=ALL
通过运行以下内容来运行配置文件中的应用程序。
./mvnw compile quarkus:dev -Dquarkus.profile=prototype
这个命令意味着开发模式将使用 "prototype "配置文件来运行。这个配置文件将被用来代替*"dev"。*
通过以下方式访问该应用程序。
curl http://localhost:9095/hello
设置和使用不同配置文件中的变量
在这个位置设置的变量可以按照Java EE和MicroProfile的标准和规范注入到应用程序中。这些变量可以覆盖先前设置的环境变量值,这取决于使用的配置文件。
设置变量
要添加变量,例如,名为'姓名'、'年龄'和'身高'的变量属于一个''对象。人'的对象,在全球配置设置下的文件中添加以下代码。
# Global variables
person.name=john
person.age=28
person.height=165
在'dev'配置文件下添加以下内容。
# Dev variables
%dev.person.name=alice
%dev.person.age=20
%dev.person.height=154
在'test'配置文件下添加以下内容。
# Test variables
%test.person.name=mike
%test.person.age=22
%test.person.height=170
在 "prod "配置文件下添加以下内容。
# Production variables
person.name=tom
person.age=12
person.height=100
在 "prototype "配置文件下添加以下内容。
# Prototype variables
person.name=jane
person.age=54
person.height=174
注入变量
前往 "ExampleResource.java "文件。在文件中的类内添加以下代码。这是在其他块的上方。
@ConfigProperty(name = "person.name")
String name;
@ConfigProperty(name = "person.age")
String age;
@ConfigProperty(name = "person.height")
String height;
在该类中添加另一个端点,然后通过http://localhost:8081/hello/person.访问它。其代码如下。
@Path("/person")
@GET
@Produces(MediaType.TEXT_PLAIN)
public String person() {
return "The person is " + name + " of age " + age + " yrs and of height of " + height + " cm";
}
在'test'文件夹中,搜索ExampleResourceTest.java 文件并打开它。在该类中添加下面的代码。
@Test
public void testPersonEndpoint() {
given()
.when().get("/hello/person")
.then()
.statusCode(200)
.body(is("The person is mike of age 22 yrs and of height of 170 cm"));
}
这个测试应被用来检查所使用的配置文件的输出是否符合预期。
测试变量
现在我们已经在上一节中设置了配置文件,让我们继续进行,并进行项目测试如下。
在dev profile中测试
使用以下方法运行应用程序。
./mvnw compile quarkus:dev
在另一个终端中,通过运行以下命令访问它。
curl http://localhost:8082/hello/person.
结果将是 "这个人是22岁的麦克,身高170厘米"。这个结果的输出是因为在测试运行时使用了测试配置文件。
在有日志的终端上,键入r 来运行测试。如果它产生一个成功的输出,那么一切都很好。
在原型配置文件中测试
使用以下方法运行应用程序。
./mvnw compile quarkus:dev -Dquarkus.profile=prototype
在另一个终端,使用curl http://localhost:9095/hello/person 。
在有日志的终端上,键入r 来运行测试。如果它产生一个成功的输出,那么一切都很好。
预期的输出是:"这个人是Jane,年龄54岁,身高174厘米"。
在YAML文件中配置配置文件
另一种可以在Quarkus中配置配置文件的方法是使用YAML文件。
要做到这一点,请遵循以下步骤。
打开一个新的终端,运行下面的命令。
./mvnw quarkus:add-extension -Dextensions="io.quarkus:quarkus-config-yaml"
上述命令将添加quarkus-config-yaml 扩展名,使项目中的YAML文件得到快速和方便的使用。
或者,在pom.xml 文件中的依赖部分内添加下面的代码块。
<!--Add the quarkus-config-yaml extension to your project-->
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-config-yaml</artifactId>
</dependency>
通过右键点击pom.xml 文件,在Maven 选项下选择Reload project 选项,重新加载整个项目。同样地,只要重新启动IDE,它就会刷新项目。
将application.properties 文件重命名为application.properties.OLD 。这使得其内容在系统中可用,但在应用程序中不使用。这种重命名有助于在将配置转换为YAML文件时参考这些配置。
在与application.properties.OLD 文件相同的位置,创建一个名为application.yml 的新文件。
现在,使用缩进格式样式将配置从application.properties.OLD 翻译到application.yml 文件。如下图所示。
# Global configurations and variables
quarkus:
http:
port: 8081
datasource:
db-kind: postgresql
username: username
password: password
jdbc:
url: jdbc:postgresql://localhost:5432/my_db
hibernate-orm:
database:
generation: drop-and-create
log:
console:
level: INFO
person:
name: john
age: 28
height: 165
# Dev configurations and variables
"%dev":
quarkus:
http:
port: 8082
log:
console:
level: ALL
person:
name: alice
age: 20
height: 154
# Testing environment configuration profile
"%test":
quarkus:
http:
port: 9090
access-log:
enabled: true
log:
console:
level: DEBUG
datasource:
db-kind: postgresql
username: username
password: password
jdbc:
url: jdbc:postgresql://localhost:5432/my_db
person:
name: mike
age: 22
height: 170
# Production configuration profiles.
"%prod":
http:
port: 9095
quarkus:
package:
type: uber-jar
# Prototype profile
"%prototype":
quarkus:
http:
port: 9095
log:
console:
level: ALL
person:
name: jane
age: 54
height: 174
在原型配置文件中重新启动应用程序,使用。
./mvnw compile quarkus:dev -Dquarkus.profile=prototype
通过运行测试结果。
curl http://localhost:9095/hello/person
输出是 "这个人是Jane,年龄54岁,身高174厘米"。按r ,在日志终端运行测试。测试将像以前一样成功运行。
这次运行证明了application.properties 文件中的配置与application.yml 文件中的配置是相同的。
尝试在其他配置文件中重新启动项目。添加新的配置文件的配置和变量,并在其中运行应用程序。
结论
系统开发是一个耗时的过程,随着产品环境的变化,需要多次改变设置。这导致需要一种快速的方式来切换它们,因此引入了配置文件。
在这篇文章中,我们讨论并学习了什么是Quarkus配置文件,配置文件的类型,如开发、生产、测试和自定义;在Quarkus中设置它们在application.properties 文件和YAML 文件,以及在项目中使用和测试它们。