Spring Boot - Propriedades do aplicativo

As propriedades do aplicativo nos ajudam a trabalhar em diferentes ambientes. Neste capítulo, você aprenderá como configurar e especificar as propriedades para um aplicativo Spring Boot.

Propriedades da linha de comando

O aplicativo Spring Boot converte as propriedades da linha de comando em propriedades Spring Boot Environment. As propriedades da linha de comando têm precedência sobre as outras fontes de propriedade. Por padrão, o Spring Boot usa o número da porta 8080 para iniciar o Tomcat. Vamos aprender como alterar o número da porta usando as propriedades da linha de comando.

Step 1 - Depois de criar um arquivo JAR executável, execute-o usando o comando java –jar <JARFILE>.

Step 2 - Use o comando fornecido na captura de tela abaixo para alterar o número da porta para o aplicativo Spring Boot usando as propriedades da linha de comando.

Note - Você pode fornecer mais de uma propriedade de aplicativo usando o delimitador -.

Arquivo de Propriedades

Os arquivos de propriedades são usados ​​para manter o número 'N' de propriedades em um único arquivo para executar o aplicativo em um ambiente diferente. No Spring Boot, as propriedades são mantidas noapplication.properties arquivo sob o classpath.

O arquivo application.properties está localizado no src/main/resourcesdiretório. O código da amostraapplication.properties arquivo é fornecido abaixo -

server.port = 9090
spring.application.name = demoservice

Observe que, no código mostrado acima, o demoservice do aplicativo Spring Boot começa na porta 9090.

Arquivo YAML

Spring Boot oferece suporte a configurações de propriedades baseadas em YAML para executar o aplicativo. Ao invés deapplication.properties, podemos usar application.ymlArquivo. Este arquivo YAML também deve ser mantido dentro do classpath. A amostraapplication.yml arquivo é fornecido abaixo -

spring:
   application:
      name: demoservice
   server:
port: 9090

Propriedades Externalizadas

Em vez de manter o arquivo de propriedades no caminho de classe, podemos manter as propriedades em locais ou caminhos diferentes. Ao executar o arquivo JAR, podemos especificar o caminho do arquivo de propriedades. Você pode usar o seguinte comando para especificar a localização do arquivo de propriedades ao executar o JAR -

-Dspring.config.location = C:\application.properties

Uso da anotação @Value

A anotação @Value é usada para ler o ambiente ou o valor da propriedade do aplicativo no código Java. A sintaxe para ler o valor da propriedade é mostrada abaixo -

@Value("${property_key_name}")

Veja o seguinte exemplo que mostra a sintaxe para ler o spring.application.name valor da propriedade na variável Java usando a anotação @Value.

@Value("${spring.application.name}")

Observe o código fornecido abaixo para um melhor entendimento -

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {
   @Value("${spring.application.name}")
   private String name;
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @RequestMapping(value = "/")
   public String name() {
      return name;
   }
}

Note - Se a propriedade não for encontrada durante a execução do aplicativo, Spring Boot lança a exceção de argumento ilegal como Could not resolve placeholder 'spring.application.name' in value "${spring.application.name}".

Para resolver o problema do espaço reservado, podemos definir o valor padrão para a propriedade usando a sintaxe fornecida abaixo -

@Value("${property_key_name:default_value}")

@Value("${spring.application.name:demoservice}")

Perfil ativo do Spring Boot

Spring Boot oferece suporte a diferentes propriedades com base no perfil ativo Spring. Por exemplo, podemos manter dois arquivos separados para desenvolvimento e produção para executar o aplicativo Spring Boot.

Perfil ativo do Spring em application.properties

Vamos entender como ter o perfil ativo do Spring em application.properties. Por padrão, aplicativo. propriedades serão usadas para executar o aplicativo Spring Boot. Se você quiser usar propriedades baseadas em perfil, podemos manter arquivos de propriedades separados para cada perfil, conforme mostrado abaixo -

application.properties

server.port = 8080
spring.application.name = demoservice

application-dev.properties

server.port = 9090
spring.application.name = demoservice

application-prod.properties

server.port = 4431
spring.application.name = demoservice

Ao executar o arquivo JAR, precisamos especificar o perfil ativo da mola com base em cada arquivo de propriedades. Por padrão, o aplicativo Spring Boot usa o arquivo application.properties. O comando para definir o perfil ativo da mola é mostrado abaixo -

Você pode ver o nome do perfil ativo no log do console, conforme mostrado abaixo -

2017-11-26 08:13:16.322  INFO 14028 --- [           
   main] com.tutorialspoint.demo.DemoApplication  :
   The following profiles are active: dev

Agora, o Tomcat foi iniciado na porta 9090 (http) conforme mostrado abaixo -

2017-11-26 08:13:20.185  INFO 14028 --- [           
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 9090 (http)

Você pode definir o perfil ativo de produção conforme mostrado abaixo -

Você pode ver o nome do perfil ativo no log do console, conforme mostrado abaixo -

2017-11-26 08:13:16.322  INFO 14028 --- [           
   main] com.tutorialspoint.demo.DemoApplication  :
   The following profiles are active: prod

Agora, o Tomcat começou na porta 4431 (http) conforme mostrado abaixo -

2017-11-26 08:13:20.185  INFO 14028 --- [          
   main] s.b.c.e.t.TomcatEmbeddedServletContainer :
   Tomcat started on port(s): 4431 (http)

Perfil ativo Spring para application.yml

Vamos entender como manter o perfil ativo do Spring para application.yml. Podemos manter as propriedades do perfil ativo do Spring no únicoapplication.ymlArquivo. Não há necessidade de usar o arquivo separado, como application.properties.

A seguir está um exemplo de código para manter os perfis ativos do Spring no arquivo application.yml. Observe que o delimitador (---) é usado para separar cada perfil no arquivo application.yml.

spring:
   application:
      name: demoservice
server:
   port: 8080

---
spring:
   profiles: dev
   application:
      name: demoservice
server:
   port: 9090

---
spring: 
   profiles: prod
   application:
      name: demoservice
server: 
   port: 4431

O comando para definir o perfil ativo de desenvolvimento é fornecido abaixo -

Você pode ver o nome do perfil ativo no log do console, conforme mostrado abaixo -

2017-11-26 08:41:37.202  INFO 14104 --- [           
   main] com.tutorialspoint.demo.DemoApplication  : 
   The following profiles are active: dev

Agora, o Tomcat começou na porta 9090 (http) conforme mostrado abaixo -

2017-11-26 08:41:46.650  INFO 14104 --- [           
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 9090 (http)

O comando para definir o perfil ativo de produção é fornecido abaixo -

Você pode ver o nome do perfil ativo no log do console, conforme mostrado abaixo -

2017-11-26 08:43:10.743  INFO 13400 --- [    
   main] com.tutorialspoint.demo.DemoApplication  : 
   The following profiles are active: prod

Isso iniciará o Tomcat na porta 4431 (http) conforme mostrado abaixo:

2017-11-26 08:43:14.473  INFO 13400 --- [     
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 4431 (http)