Spring-undertow e a application.properties

Hoje vamos mostrar como customizar sua application properties de forma que você consiga utilizar sua aplicação spring-undertow tanto de forma local, quanto em um servidor.

Primeiro precisamos separar nossa application properties em três arquivos, um sendo nosso arquivogeral”, uma que represente as configurações que queremos em nossa maquina local e por ultimo um que leia as configurações do servidor.

Sendo assim nossas applications deve ficar da seguinte forma:

Pasta Resource da Aplicação

Após realizar a separação precisamos adicionar as configurações que contemplam tanto o cenário da aplicação rodando localmente, quanto rodando em um servidor, tais como configuração de rota, porta, log e jpa, foram essas configurações de exemplo usadas nesse artigo como pode ser visto abaixo.

Imagem da property principal

Essa é a property inicial, ou seja, será esse arquivo que nossa aplicação irá ler, por isso devemos sinalizar o profile de produção para que ele funcione como como uma extensão da property inicial, como podemos ver na linha quadro.

No nossos profiles de exemplo ficaram as conexões ao banco de dados, pois no nosso cenário o acesso ao banco de dados de produção é diferente do acesso que temos na nossa maquina local, sendo assim imaginando que não sabemos o usuário e senha de produção vamos ler um arquivo para retornar essas informações. Nesse artigo tomamos como exemplo que nosso servidor de produção é um wildfly, sendo assim nossa property de produção fica da seguinte forma.

Imagem da property de produção

Nossa aplicação não tem acesso aos usuário de produção por conta disso ela lê um arquivo pelo seu nome de jndi, sendo assim a aplicação obtêm as informações necessárias para criar sua conexão, o documento que a aplicação irá ler é semelhante com o visto abaixo e fica na pasta standalone\deployments do servidor.

Documento JNDI

Porém caso você rode essa aplicação na sua maquina local com o undertow ela não irá executar, pelo fato de não conseguir criar uma conexão, sendo assim devemos informar a aplicação quais são as conexões que ela deve acessar localmente, por conta disso criamos um terceira property, para contemplar essa situação, como imagem abaixo.

Veja que informamos tudo o que é necessário para realizar uma conexão dentro dessa property, porém temos um pequeno problema, como você pode ter observado não sinalizamos em momento algum essa property para nossa property principal, e deve ser assim, até porque a ideia é que você consiga fazer um compilado para enviar ao servidor sem ter que alterar a todo momento qual property ele deve usar, pois você pode esquecer de realizar essa alteração e criar um executável com problema, por conta disso vamos sinalizar para a IDE qual property ela deve usar, sendo assim quando executarmos em nossa IDE essa irá executar uma property e ao executar em nosso servidor esse executará outra property.

Vá a configurações de execução da sua IDE e adicione o seguinte comando na VM Options: -Dspring.profiles.active=act
Sendo assim ela executará nossa property de aceite.