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.
Source: https://docs.spring.io/spring-cloud-config/docs/current/reference/html/
Spring Cloud Config Server
Spring Cloud Config Server provides an HTTP resource-based API for external configuration (name-value pairs or equivalent YAML content). The server is embeddable in a Spring Boot application, by using the @EnableConfigServer annotation. Consequently, the following application is a config server:
@SpringBootApplication
@EnableConfigServer
public class ConfigServer {
public static void main(String[] args) {
SpringApplication.run(ConfigServer.class, args);
}
}
Source: https://docs.spring.io/spring-cloud-config/docs/current/reference/html/#_spring_cloud_config_server
The config server application needs this dependency:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
The default implementation of the server storage backend uses git, but you can also use SVN, file system, CredHub, AWS (Secrets Manager, Parameter Store, or S3), JDBC, Redis, or Vault. For git, you must create a repository containing YAML and properties files in the master branch. Then, define it in the application.properties file of the Config Server application:
spring.application.name=spring-cloud-config-server
server.port=8888
spring.cloud.config.server.git.uri=file:///C:/Users/home/Desktop/yourProject/git-repo
If you added a config-client.properties file, for instance, in the git repository, you can run the config server application and access http://localhost:8888/config-client/default to view the properties (default is the profile).
Spring Cloud Config Client
Spring Boot applications can use the Spring Config Server. The config client applications need this dependency:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
Then, add in the application.properties file of the Config client applications this property:
spring.config.import=optional:configserver:http://localhost:8888
Additionaly, if you are using different profiles you must define the profile and it will use the corresponding properties file. Add this property: spring.cloud.config.profile=profile (where profile is dev, qa, etc)
Finally, you can use the @ConfigurationProperties or @Value annotations to access the properties from the config server.
For more information see: https://www.baeldung.com/spring-cloud-configuration
Top comments (0)