从 Spring Cloud Config Server 读取属性
本指南解释了您的 Quarkus 应用程序如何在运行时从 Spring Cloud Config Server 读取配置属性。
先决条件
要完成本指南,您需要
-
大约 15 分钟
-
一个 IDE
-
已安装 JDK 17+ 并正确配置了
JAVA_HOME
-
Apache Maven 3.9.9
-
如果您想使用它,可以选择 Quarkus CLI
-
如果您想构建本机可执行文件(或者如果您使用本机容器构建,则为 Docker),可以选择安装 Mandrel 或 GraalVM 并进行适当的配置
搭建 Config Server
要搭建本指南所需的 Config Server,请按照此处概述的说明进行操作。该过程的最终结果是一个正在运行的 Config Server,当查询服务器的应用程序命名为 a-bootiful-client
时,它将为名为 message
的配置属性提供 Hello world
值。
创建 Maven 项目
首先,我们需要一个新项目。使用以下命令创建一个新项目
对于 Windows 用户
-
如果使用 cmd,(不要使用反斜杠
\
并将所有内容放在同一行上) -
如果使用 Powershell,请将
-D
参数用双引号括起来,例如"-DprojectArtifactId=spring-cloud-config-quickstart"
此命令生成一个导入 spring-cloud-config-client
扩展的项目。
如果您已经配置了 Quarkus 项目,则可以通过在项目基本目录中运行以下命令将 spring-cloud-config-client
扩展添加到您的项目
quarkus extension add spring-cloud-config-client
./mvnw quarkus:add-extension -Dextensions='spring-cloud-config-client'
./gradlew addExtension --extensions='spring-cloud-config-client'
这会将以下内容添加到您的构建文件中
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-spring-cloud-config-client</artifactId>
</dependency>
implementation("io.quarkus:quarkus-spring-cloud-config-client")
GreetingController
首先,在 src/main/java/org/acme/spring/cloud/config/client/GreetingResource.java
文件中创建一个简单的 GreetingResource
Jakarta REST 资源,如下所示
package org.acme.spring.spring.cloud.config.client;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "hello";
}
}
由于我们要使用从 Config Server 获取的配置属性,我们将更新 GreetingResource
以注入 message
属性。更新后的代码如下所示
package org.acme.spring.spring.cloud.config.client;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import org.eclipse.microprofile.config.inject.ConfigProperty;
@Path("/hello")
public class GreetingResource {
@ConfigProperty(name = "message", defaultValue="hello default")
String message;
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return message;
}
}
配置应用程序
Quarkus 在 quarkus.spring-cloud-config
根目录下提供了各种配置旋钮。为了本指南的目的,我们的 Quarkus 应用程序将在 application.properties
中配置如下
# use the same name as the application name that was configured when standing up the Config Server
quarkus.application.name=a-bootiful-client
# enable retrieval of configuration from the Config Server - this is off by default
quarkus.spring-cloud-config.enabled=true
# configure the URL where the Config Server listens to HTTP requests - this could have been left out since https://:8888 is the default
quarkus.spring-cloud-config.url=https://:8888
如果您使用的是 Gradle,则 Gradle 设置 |
打包并运行应用程序
使用以下命令运行应用程序
quarkus dev
./mvnw quarkus:dev
./gradlew --console=plain quarkusDev
在浏览器中打开 https://:8080/greeting。
结果应该是:Hello world
,因为它是从 Spring Cloud Config 服务器获得的值。
将应用程序作为原生可执行文件运行
您当然可以使用构建原生可执行文件指南的说明来创建原生镜像。
Spring Cloud Config Client 参考
构建时固定的配置属性 - 所有其他配置属性都可以在运行时覆盖
配置属性 |
类型 |
默认 |
---|---|---|
如果启用,将尝试从 Spring Cloud Config Server 读取配置 环境变量: 显示更多 |
布尔值 |
|
如果设置为 true,如果应用程序无法从 Config Server 获取配置,则不会启动 环境变量: 显示更多 |
布尔值 |
|
Spring Cloud Config Server 可用的基本 URI 环境变量: 显示更多 |
字符串 |
|
Spring Cloud Config 服务器上的应用程序名称。可以是名称列表,用于加载多个文件(值用逗号分隔) 环境变量: 显示更多 |
字符串 |
|
用于拉取远程配置属性的标签。默认设置在 Spring Cloud Config Server 上(通常在使用 Git 后端时为“master”)。 环境变量: 显示更多 |
字符串 |
|
最初建立连接时等待放弃并超时的时长。 指定 环境变量: 显示更多 |
|
|
在抛出异常之前等待套接字读取的时间。 指定 环境变量: 显示更多 |
|
|
如果 Config Server 启用了 BASIC Auth,则使用的用户名 环境变量: 显示更多 |
字符串 |
|
如果 Config Server 启用了 BASIC Auth,则使用的密码 环境变量: 显示更多 |
字符串 |
|
要使用的 TrustStore,其中包含 Config 服务器使用的 SSL 证书。可以是类路径资源或文件系统路径 环境变量: 显示更多 |
path |
|
要使用的 TrustStore 的密码,其中包含 Config 服务器使用的 SSL 证书 环境变量: 显示更多 |
字符串 |
|
要使用的 KeyStore,其中包含用于与 Config 服务器进行身份验证的 SSL 证书。可以是类路径资源或文件系统路径 环境变量: 显示更多 |
path |
|
要使用的 KeyStore 的密码,其中包含用于与 Config 服务器进行身份验证的 SSL 证书 环境变量: 显示更多 |
字符串 |
|
从 KeyStore 恢复密钥以使用 Config 服务器进行 SSL 客户端身份验证的密码。如果未提供值,则将使用 key-store-password 环境变量: 显示更多 |
字符串 |
|
当使用 HTTPS 且未指定 keyStore 时,是否信任所有证书 环境变量: 显示更多 |
布尔值 |
|
执行 HTTP 请求时传递给 Spring Cloud Config Server 的自定义标头 环境变量: 显示更多 |
Map<String,String> |
|
字符串列表 |
||
Microprofile Config ordinal. 环境变量: 显示更多 |
整数 |
|
关于 Duration 格式
要编写 duration 值,请使用标准 您还可以使用简化的格式,以数字开头
在其他情况下,简化格式将被转换为
|