Resolvido: Integrando Spring Cloud Config sem Spring Boot
Introdução
O Spring Cloud Config é um poderoso recurso do ecossistema Spring que permite gerenciar a configuração de aplicativos distribuídos. Normalmente, ele é usado em conjunto com o Spring Boot para simplificar a configuração do aplicativo. No entanto, neste artigo, vamos explorar como integrar o Spring Cloud Config sem depender do Spring Boot. Vamos mergulhar no código Java e explorar as possibilidades da biblioteca Spring Cloud Config.
Configuração sem Spring Boot
O Spring Cloud Config fornece uma maneira conveniente de externalizar a configuração de aplicativos distribuídos. Ele segue uma abordagem cliente-servidor, onde o cliente solicita suas propriedades de configuração a um servidor remoto. Vamos começar configurando o servidor de configuração.
Configurando o servidor
Adicione a dependência do Spring Cloud Config ao seu projeto:
xml
Copy code
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
Crie uma classe de configuração para o servidor:
java
Copy code
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
Configure o servidor no arquivo application.properties:
properties
Copy code
spring.application.name=config-server
server.port=8888
spring.cloud.config.server.git.uri=<URL_DO_REPOSITORIO>
Certifique-se de substituir <URL_DO_REPOSITORIO> pela URL do repositório Git que contém as configurações do aplicativo.
Configurando o cliente
Agora, vamos configurar um cliente para solicitar a configuração do servidor.
Adicione a dependência do Spring Cloud Config ao seu projeto:
xml
Copy code
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
Crie uma classe de configuração para o cliente:
java
Copy code
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.web.client.RestTemplate;
@Configuration
public class AppConfig {
@Value(“${config-server-uri:http://localhost:8888}”)
private String configServerUri;
@Bean
@Profile(“!default”)
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
public ConfigServicePropertySourceLocator configServicePropertySourceLocator() {
ConfigServicePropertySourceLocator locator = new ConfigServicePropertySourceLocator(configServerUri);
locator.setRestTemplate(restTemplate());
return locator;
}
}
Certifique-se de substituir http://localhost:8888 pela URL do servidor de configuração se você estiver executando-o em um local diferente.
Acesse a configuração no cliente:
java
Copy code
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConfigController {
@Value(“${message:Hello World!}”)
private String message;
@GetMapping(“/message”)
public String getMessage() {
return message;
}
}
Agora, quando você acessar /message no cliente, ele solicitará a configuração do servidor de configuração e retornará o valor da propriedade message.
Conclusão
Neste artigo, exploramos como integrar o Spring Cloud Config sem depender do Spring Boot. Aprendemos a configurar um servidor de configuração e um cliente para acessar a configuração remota. Embora o Spring Boot seja uma escolha comum ao trabalhar com o Spring Cloud Config, demonstramos que é possível utilizar essa funcionalidade de maneira mais modular e flexível. Espero que este artigo tenha sido útil para você entender como aproveitar o poder do Spring Cloud Config em seus projetos Java.