Estou implementando um Config server usando o Spring Cloud Config. Foi exigido que o backend do desse Config Server fosse com um banco de dados em vez do git. Estou tendo muita dificuldade para entender como o config server funciona nesse caso. E não tem muitos artigos com exemplos bons (na verdade não encontrei um bom). Os exemplos que encontrei são bem confusos. Alguém já fez uma implementação desse tipo?
Vi sim. Inclusive até implementei o config server. A minha maior dúvida dentro disso é como ele vai disponibilizar essas configurações para o client. Preciso escrever um controller para isso?
Eu gravei no banco as configurações da aplicação cliente mas ela não está conseguindo ler essas configurações.
Então eu gostaria de entender como o config server disponibiliza as configuracoes quando tem como back end um banco e como vou receber as configurações na aplicação client?
Já fez algo assim?
L
Lucas_Camara
De acordo com essa documentação, vc precisa criar um schema de banco, e ter nesse schema uma tabela chamada PROPERTIES, com as colunas: APPLICATION, PROFILE, LABEL, KEY e VALUE.
spring:datasource:driver-class-name:driver.do.seu.bancourl:'jdbc:url-de-conexao'cloud:config:server:jdbc:order:2sql:'SELECT key, value FROM Properties WHERE application = ? AND profile = ? AND label = ?'username:rootpassword:suaSenha
Não esqueça de colocar a dependência do spring-jdbc no projeto
J
JanainaDePaula
Entendi. A tabela eu já tinha. Mas não tinha colocado o @import e criado esses Beans.
Mais uma pergunta, na aplicação cliente só preciso colocar a dependencia do Spring Cloud Config client e colocar no bootstrap.yml o nome da aplicação, uri do config server, o profile ativo e o label? ou tem mais alguma coisa que preciso configurar?
No momento o bootstrap da minha aplicação cliente está assim:
Se não me engano, só isso mesmo. Apenas o profile que eu uso de outra forma:
spring:profiles:active:dev
J
JanainaDePaula
Beleza. Obrigada Lucas.
Só mais uma pergunta, eu também tava tentando usar a anotação @RefreshScope para uma atualização automática das configurações em casos de alterações. Nos exemplos que vi, essa anotação estava sendo usanda no controller, estava mais ou menos assim
Teria uma forma de centralizar isso em uma classe de configuração por exemplo? Tipo em vez de colocar o @RefreshScope em cada componente da aplicação que vai pegar um valor que está nas configurações, usar uma classe que vai atualizar tudo.
J
JanainaDePaula1 like
Olá Lucas, consegui desenrolar as coisas por aqui.
Muito Obrigada!
L
Lucas_Camara
Desculpe não ter respondido (tb nunca precisei usar esse refresh scope). Mas bom que vc conseguiu.
A
anddosanjos
Boa tarde amigos!
Vocês me ajudaram muito pra configurar o server do spring cloud config para acessar o banco. Só fiquei com uma dúvida de como consultar o valor salvo na tabela através do cliente.
Como deve ficar o aplication.yml do config client pra conseguir pegar o value da key do banco?
Agradeço!
A
anddosanjos
Consegui. Basta colocar no nome da Key dentro do application client