Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Externalizar configurações Spring Boot

Olá, necessito externalizar minhas configurações do Spring Boot no desenvolvimento de uma aplicação. Necessidade: Como exemplo da vídeo aula as configurações do .properties é formidável mais em produção fica inviável pois para cada cliente eu teria que configurar e em seguida compilar novamente . A necessidade é de externalizar as configurações por exemplo, banco de dados, pool de conexões para que no cliente (já com o artefato compilado) eu possa somente fazer a configurações destes atributos e "subir" a aplicação.

Existe algum padrão para isso?

3 respostas

Bom dia Patrick,

Há como fazer isso. Você pode usar variáveis de ambiente no seu arquivo .properties e, no ambiente em que a aplicação roda (seja um SO por aplicação, uma VM por aplicação ou até um container Docker para cada uma), popular tais variáveis com os valores específicos para cada cliente.

Exemplo de application.properties:

dataSource.driverClassName=oracle.jdbc.OracleDriver
dataSource.url=${DATABASE_URL}
dataSource.username=${DATABASE_USER}
dataSource.password=${DATABASE_PASS}

Variáveis de ambiente do cliente 1:

DATABASE_URL=jdbc:oracle:thin:@db_host:1521:sid
DATABASE_USER=usr
DATABASE_USER=senhaDificil246810

Variáveis de ambiente do cliente 2:

DATABASE_URL=jdbc:oracle:thin:@db_host2:1521:sid
DATABASE_USER=cliente2
DATABASE_USER=senhaDificilDoCliente2

Quando você subir a aplicação no ambiente do cliente 1, o .properties vai ter os valores das variáveis definidas naquele ambiente. Quando você subir no outro ambiente, os valores das variáveis serão diferentes, logo o .properties também vai ter valores diferentes, sem precisar recompilar.

Há outros modos (bem) mais seguros de guardar senhas, mas usei esse a título de exemplo.

Espero tê-lo ajudado. Se houver mais dúvidas, avisa aí.

Abraço.

Aproveitando... Existe algum método "padrão de mercado" para subir o JAR criado com Spring Boot como serviço?

solução!

Olá Patrick,

Creio que você pode configurar a inicialização do JAR nos serviços do SO usado (tanto Windows como Linux têm esquema para inicialização automática de serviços).

No Linux, por exemplo, você pode configurar para que, na inicialização do SO, um shell que tenha este comando seja rodado:

java -jar jarDoSpringBoot.jar

Abraço.