Profiles no Spring Boot

Profiles é mais uma das facilidades que o Spring Boot traz no seu conjunto de características. Os profiles são um tipo de configuração para ambientes, por exemplo profiles de desenvolvimento, homologação e produção.

Para configurar os profiles são dois passos:
1- Criar os arquivos application.properties
2- Configurar a propriedade spring.profiles.active dentro do application.properties

Arquivos application.properties
Por padrão, o Spring boot espera que tenha o arquivo application.properties esteja criado e caso não tenha passado a propriedade spring.profiles.active por parâmetro ou informada no arquivo de configuração o Spring Boot entende que há apenas um profile na aplicação.

Com isso, poderíamos deixar o arquivo application.properties para ser as configurações de desenvolvimento,pois se não passado nenhum parâmetro o Spring boot sempre vai executar esse arquivo.

Configurando a propriedade
O Spring boot disponibiliza através do application.properties a propriedade spring.profiles.active, que nela é possível colocar qualquer apelido para os profiles, no entanto, o nome que for dado para o profile é preciso ser concatenado com application.properties, exemplo: application-prod.properties.

Exemplo

Criamos o arquivo application.properties e setamos o profile de dev para esse arquivo, com isso, sempre que executar o Spring boot esse arquivo será carregado.

spring.profiles.active=dev

spring.datasource.url=jdbc:postgresql://localhost:5432/banco-dev
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.datasource.driver-class-name=org.postgresql.Driver

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

server.port=8081

logging.level.br.com.despesas=DEBUG

Nesse caso, a propriedade de dev não tem nenhuma função, seria apenas caso utilizado essa propriedade no código para validar se está em ambiente de desenvolvimento.

Agora criamos o profile de produção, seguindo o padrão (aplication-nomeProfile.properties) application-prod.properties e definimos o profiles.active como prod.

spring.profiles.active=prod

spring.datasource.url=jdbc:postgresql://localhost:5432/banco-prod
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.datasource.driver-class-name=org.postgresql.Driver

spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false

server.port=8081

logging.level.br.com.despesas=INFO

Esse profile apenas será executado quando o parâmetro profiles.active for setado como prod, assim, no momento da executação do Spring boot é preciso passar o seguinte parâmetro -Dspring.profiles.active=prod, sendo exeutado com o comando: mvn spring-boot:run -Dspring.profiles.active=prod.

Outra opção que pode ser feita é ter também o application properties de desenvolvimento, o que permite ter configurações genéricas no application.properties, sempre vão ser executadas, e apenas configurações específicas de ambiente nos arquivos de profile, exemplo:

application.properties

spring.profiles.active=dev

spring.datasource.driver-class-name=org.postgresql.Driver

spring.http.encoding.enabled=true
spring.http.encoding.charset=UTF-8

server.port=8080

application-dev.properties

spring.datasource.url=jdbc:postgresql://localhost:5432/banco-dev
spring.datasource.username=postgres
spring.datasource.password=postgres

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

application-prod.properties

spring.profiles.active=prod

spring.datasource.url=jdbc:postgresql://localhost:5432/banco-prod
spring.datasource.username=postgres
spring.datasource.password=postgres

spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false

Dessa forma, o Spring Boot sempre vai executar o application.properties, no entanto, sempre vai precisar de um parâmetro para identificar qual profile executar, caso não informado, provavelmente vai ocorrer erro no startup da aplicação porque as configurações do datasource são definidas nos arquivos de configuração por ambiente(application-dev e application-prod), assim sempre vai ser necessário executar a aplicação da seguinte forma mvn spring-boot:run -Dspring.profiles.active=dev ou mvn spring-boot:run -Dspring.profiles.active=prod.

2 comentários sobre “Profiles no Spring Boot

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s