Reading properties from Spring Cloud Config Server
This guide explains how your Quarkus application can read configuration properties at runtime from the Spring Cloud Config Server.
准备
要完成本指南,您需要:
-
Roughly 15 minutes
-
An IDE
-
JDK 11+ installed with
JAVA_HOME
configured appropriately -
Apache Maven 3.9.6
-
Optionally the Quarkus CLI if you want to use it
-
Optionally Mandrel or GraalVM installed and configured appropriately if you want to build a native executable (or Docker if you use a native container build)
完整源码
We recommend that you follow the instructions in the next sections and create the application step by step.
Stand up a Config Server
To stand up the Config Server required for this guide, please follow the
instructions outlined
here.
The end result of that process is a running Config Server that will provide
the Hello world
value for a configuration property named message
when
the application querying the server is named a-bootiful-client
.
Creating the Maven project
First, we need a new project. Create a new project with the following command:
For Windows users:
-
If using cmd, (don’t use backward slash
\
and put everything on the same line) -
If using Powershell, wrap
-D
parameters in double quotes e.g."-DprojectArtifactId=spring-cloud-config-quickstart"
This command generates a project which imports the
spring-cloud-config-client
extension.
If you already have your Quarkus project configured, you can add the
spring-cloud-config-client
extension to your project by running the
following command in your project base directory:
quarkus extension add spring-cloud-config-client
./mvnw quarkus:add-extension -Dextensions='spring-cloud-config-client'
./gradlew addExtension --extensions='spring-cloud-config-client'
This will add the following to your build file:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-spring-cloud-config-client</artifactId>
</dependency>
implementation("io.quarkus:quarkus-spring-cloud-config-client")
GreetingController
First, create a simple GreetingResource
Jakarta REST resource in the
src/main/java/org/acme/spring/cloud/config/client/GreetingResource.java
file that looks like:
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";
}
}
As we want to use configuration properties obtained from the Config Server,
we will update the GreetingResource
to inject the message
property. The
updated code will look like this:
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 provides various configuration knobs under the
quarkus.spring-cloud-config
root. For the purposes of this guide, our
Quarkus application is going to be configured in application.properties
as
follows:
# 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
Package and run the application
Run the application with:
quarkus dev
./mvnw quarkus:dev
./gradlew --console=plain quarkusDev
Open your browser to http://localhost:8080/greeting.
The result should be: Hello world
as it is the value obtained from the
Spring Cloud Config server.
Run the application as a native executable
You can of course create a native image using the instructions of the Building a native executable guide.
More Spring guides
Quarkus has more Spring compatibility features. See the following guides for more details:
Spring Cloud Config Client Reference
Configuration property fixed at build time - All other configuration properties are overridable at runtime
Type |
Default |
|
---|---|---|
If enabled, will try to read the configuration from a Spring Cloud Config Server Environment variable: Show more |
boolean |
|
If set to true, the application will not stand up if it cannot obtain configuration from the Config Server Environment variable: Show more |
boolean |
|
The Base URI where the Spring Cloud Config Server is available Environment variable: Show more |
string |
|
The label to be used to pull remote configuration properties. The default is set on the Spring Cloud Config Server (generally "master" when the server uses a Git backend). Environment variable: Show more |
string |
|
The amount of time to wait when initially establishing a connection before giving up and timing out. Specify Environment variable: Show more |
|
|
The amount of time to wait for a read on a socket before an exception is thrown. Specify Environment variable: Show more |
|
|
The username to be used if the Config Server has BASIC Auth enabled Environment variable: Show more |
string |
|
The password to be used if the Config Server has BASIC Auth enabled Environment variable: Show more |
string |
|
TrustStore to be used containing the SSL certificate used by the Config server Can be either a classpath resource or a file system path Environment variable: Show more |
path |
|
Password of TrustStore to be used containing the SSL certificate used by the Config server Environment variable: Show more |
string |
|
KeyStore to be used containing the SSL certificate for authentication with the Config server Can be either a classpath resource or a file system path Environment variable: Show more |
path |
|
Password of KeyStore to be used containing the SSL certificate for authentication with the Config server Environment variable: Show more |
string |
|
Password to recover key from KeyStore for SSL client authentication with the Config server If no value is provided, the key-store-password will be used Environment variable: Show more |
string |
|
When using HTTPS and no keyStore has been specified, whether to trust all certificates Environment variable: Show more |
boolean |
|
The profiles to use for lookup Environment variable: Show more |
list of string |
|
Custom headers to pass the Spring Cloud Config Server when performing the HTTP request Environment variable: Show more |
|
About the Duration format
To write duration values, use the standard You can also use a simplified format, starting with a number:
In other cases, the simplified format is translated to the
|