This guide explains how your Quarkus application can read configuration properties at runtime from the Spring Cloud Config Server.
Prerequisites
To complete this guide, you need:
- 
Roughly 15 minutes 
- 
An IDE 
- 
JDK 17+ installed with JAVA_HOMEconfigured appropriately
- 
Apache Maven 3.9.9 
- 
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) 
Solution
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 -Dparameters 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| If you are using Gradle, the Gradle setting  | 
Package and run the application
Run the application with:
quarkus dev./mvnw quarkus:dev./gradlew --console=plain quarkusDevOpen 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
| Configuration property | Type | Default | 
|---|---|---|
| If enabled, will try to read the configuration from a Spring Cloud Config Server Environment variable:  | boolean | 
 | 
| If set to true, the application will not stand up if it cannot obtain configuration from the Config Server Environment variable:  | boolean | 
 | 
| The Base URI where the Spring Cloud Config Server is available Environment variable:  | string | |
| Name of the application on Spring Cloud Config server. Could be a list of names to load multiple files (value separated by a comma) Environment variable:  | 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:  | string | |
| The amount of time to wait when initially establishing a connection before giving up and timing out. Specify  Environment variable:  | 
 | |
| The amount of time to wait for a read on a socket before an exception is thrown. Specify  Environment variable:  | 
 | |
| The username to be used if the Config Server has BASIC Auth enabled Environment variable:  | string | |
| The password to be used if the Config Server has BASIC Auth enabled Environment variable:  | 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:  | path | |
| Password of TrustStore to be used containing the SSL certificate used by the Config server Environment variable:  | 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:  | path | |
| Password of KeyStore to be used containing the SSL certificate for authentication with the Config server Environment variable:  | 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:  | string | |
| When using HTTPS and no keyStore has been specified, whether to trust all certificates Environment variable:  | boolean | 
 | 
| Custom headers to pass the Spring Cloud Config Server when performing the HTTP request Environment variable:  | Map<String,String> | |
| The profiles to use for lookup Environment variable:  | list of string | 
| 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  
 |