Spring Cloud Config provides server-side and client-side support for externalized configuration in a distributed system. With the Config Server, you have a central place to manage external properties for applications across all environments. This blog post will guide you through setting up and using the spring-cloud-config
starter with practical examples.
Understanding the Spring Cloud Config Starter |
Why Use Spring Cloud Config?
In a microservices architecture, managing configuration across multiple services can be challenging. Spring Cloud Config addresses this by providing a centralized configuration service that is easy to manage and scale. Here are some key benefits:
- Centralized Management: Store all configurations in a central repository.
- Dynamic Updates: Update configurations without restarting your applications.
- Environment-Specific Configurations: Manage different configurations for different environments (development, testing, production).
Setting Up Spring Cloud Config Server
To get started, you need to set up a Config Server. This server will serve the configuration properties to your client applications.
-
Add Dependencies
First, add the necessary dependencies to your
pom.xml
:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
Enable Config Server
Create a Spring Boot application and enable the Config Server by adding the
@EnableConfigServer
annotation:@SpringBootApplication @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }
-
Configure Application Properties
In your
application.properties
orapplication.yml
, configure the server to use a Git repository for storing configurations:server.port=8888 spring.cloud.config.server.git.uri=https://github.com/your-repo/config-repo
Setting Up Spring Cloud Config Client
Next, set up a client application that will fetch configurations from the Config Server.
-
Add Dependencies
Add the following dependencies to your client’s
pom.xml
:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
Configure Application Properties
In your client’s
bootstrap.properties
orbootstrap.yml
, specify the Config Server URL:spring.application.name=my-client-app spring.cloud.config.uri=http://localhost:8888
-
Access Configuration Properties
You can now access the configuration properties in your Spring application using the
@Value
annotation orEnvironment
object:@RestController public class MessageController { @Value("${message:Hello default}") private String message; @GetMapping("/message") public String getMessage() { return this.message; } }
Example Configuration Repository
Create a Git repository (e.g., config-repo
) and add configuration files for your applications. For example, create a file named my-client-app.properties
with the following content:
message=Hello from Spring Cloud Config
Running the Applications
-
Start the Config Server:
mvn spring-boot:run -Dspring-boot.run.profiles=config-server
-
Start the Client Application:
mvn spring-boot:run -Dspring-boot.run.profiles=client
-
Access the Configuration:
Open your browser and navigate to
http://localhost:8080/message
. You should see the message from the Config Server.
Conclusion
Spring Cloud Config simplifies the management of configuration in a microservices architecture by providing a centralized configuration service. By following the steps outlined in this blog post, you can set up a Config Server and client applications to dynamically manage configurations across different environments.
Feel free to leave your comments or questions below. Happy coding!
Keywords: Spring Cloud Config, Spring Boot, Microservices, Centralized Configuration, Dynamic Configuration, Spring Cloud Starter
1: Baeldung - Quick Intro to Spring Cloud Configuration 2: Spring Cloud Config Documentation 3: Spring Cloud Config Quick Start