Reading properties from Spring Cloud Config Server

Prerequisites

如要完成本指南,您需要:

  • Roughly 15 minutes

  • An IDE

  • 安装了 JDK 17+,已正确配置 JAVA_HOME

  • Apache Maven ${proposed-maven-version}

  • 如果你想使用 Quarkus CLI, 则可以选择使用

  • 如果你想构建一个本机可执行文件(或如果你使用本机容器构建,则使用 Docker),则可以选择安装 Mandrel 或 GraalVM 以及 configured appropriately

Solution

我们建议你按照下一节中的说明逐步创建应用程序。

Stand up a Config Server

要建立本指南所需的 Config Server,请遵循 @ [18] 中概述的说明。该过程的最终结果是一个正在运行的 Config Server,它将在应用程序查询服务器被命名为 @ [17] 时为名为 @ [16] 的配置属性提供 @ [15] 值。

Creating the Maven project

首先,我们需要一个新项目。使用以下命令创建一个新项目:

CLI
quarkus create app {create-app-group-id}:{create-app-artifact-id} \
    --no-code
cd {create-app-artifact-id}

要创建一个 Gradle 项目,添加 --gradle--gradle-kotlin-dsl 选项。 有关如何安装和使用 Quarkus CLI 的详细信息,请参见 Quarkus CLI 指南。

Maven
mvn {quarkus-platform-groupid}:quarkus-maven-plugin:{quarkus-version}:create \
    -DprojectGroupId={create-app-group-id} \
    -DprojectArtifactId={create-app-artifact-id} \
    -DnoCode
cd {create-app-artifact-id}

要创建一个 Gradle 项目,添加 -DbuildTool=gradle-DbuildTool=gradle-kotlin-dsl 选项。

适用于 Windows 用户:

  • 如果使用 cmd,(不要使用反斜杠 \ ,并将所有内容放在同一行上)

  • 如果使用 Powershell,将 -D 参数用双引号引起来,例如 "-DprojectArtifactId={create-app-artifact-id}"

此命令生成一个导入 @ [19] 扩展名的项目。

如果你已配置了 Quarkus 项目,则可以通过在项目基础目录中运行以下命令向项目添加 @ [20] 扩展名:

CLI
quarkus extension add {add-extension-extensions}
Maven
./mvnw quarkus:add-extension -Dextensions='{add-extension-extensions}'
Gradle
./gradlew addExtension --extensions='{add-extension-extensions}'

这会将以下内容添加到构建文件中:

pom.xml
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-spring-cloud-config-client</artifactId>
</dependency>
build.gradle
implementation("io.quarkus:quarkus-spring-cloud-config-client")

GreetingController

首先,在 @ [22] 文件中创建一个简单的 @ [21] 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 获取的配置属性,因此我们将更新 @ [23] 以注入 @ [24] 属性。更新后的代码看起来像这样:

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;
    }
}

Configuring the application

quarkus.spring-cloud-config 根下,Quarkus 提供了各种配置旋钮。为了本指南的目的,我们的 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 http://localhost:8888 is the default
quarkus.spring-cloud-config.url=http://localhost:8888

如果您使用的是 Gradle,则 Gradle 设置 rootProject.name 优先于 quarkus.application.name,因此请务必将 Gradle 属性设置为希望 Spring Cloud Config 服务器看到的应用程序名称。

Package and run the application

使用以下内容运行应用程序:

CLI
quarkus dev
Maven
./mvnw quarkus:dev
Gradle
./gradlew --console=plain quarkusDev

用浏览器打开 [role="bare"][role="bare"]http://localhost:8080/greeting.

结果应为 Hello world,因为它是从 Spring Cloud Config 服务器获取的值。

Run the application as a native executable

您当然可以使用 Building a native executable guide 的说明创建一个本机映像。

Spring Cloud Config Client Reference

Unresolved include directive in modules/ROOT/pages/spring-cloud-config-client.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-spring-cloud-config-client.adoc[]