Spring Boot - Proprietà dell'applicazione

Le proprietà dell'applicazione ci aiutano a lavorare in ambienti diversi. In questo capitolo imparerai come configurare e specificare le proprietà di un'applicazione Spring Boot.

Proprietà della riga di comando

L'applicazione Spring Boot converte le proprietà della riga di comando nelle proprietà dell'ambiente Spring Boot. Le proprietà della riga di comando hanno la precedenza sulle altre origini di proprietà. Per impostazione predefinita, Spring Boot utilizza il numero di porta 8080 per avviare Tomcat. Impariamo come modificare il numero di porta utilizzando le proprietà della riga di comando.

Step 1 - Dopo aver creato un file JAR eseguibile, eseguirlo utilizzando il comando java –jar <JARFILE>.

Step 2 - Utilizzare il comando fornito nella schermata riportata di seguito per modificare il numero di porta per l'applicazione Spring Boot utilizzando le proprietà della riga di comando.

Note - È possibile fornire più di una proprietà dell'applicazione utilizzando il delimitatore -.

File delle proprietà

I file delle proprietà vengono utilizzati per mantenere il numero "N" di proprietà in un singolo file per eseguire l'applicazione in un ambiente diverso. In Spring Boot, le proprietà vengono mantenute inapplication.properties file sotto il classpath.

Il file application.properties si trova in src/main/resourcesdirectory. Il codice per l'esempioapplication.properties file è dato di seguito -

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

Notare che nel codice mostrato sopra il servizio demo dell'applicazione Spring Boot si avvia sulla porta 9090.

File YAML

Spring Boot supporta configurazioni di proprietà basate su YAML per eseguire l'applicazione. Invece diapplication.properties, possiamo usare application.ymlfile. Anche questo file YAML dovrebbe essere mantenuto all'interno del classpath. Il campioneapplication.yml file è dato di seguito -

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

Proprietà esternalizzate

Invece di mantenere il file delle proprietà sotto classpath, possiamo mantenere le proprietà in una posizione o un percorso diversi. Durante l'esecuzione del file JAR, possiamo specificare il percorso del file delle proprietà. È possibile utilizzare il seguente comando per specificare la posizione del file delle proprietà durante l'esecuzione del JAR:

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

Uso dell'annotazione @Value

L'annotazione @Value viene utilizzata per leggere il valore della proprietà dell'ambiente o dell'applicazione nel codice Java. La sintassi per leggere il valore della proprietà è mostrata di seguito:

@Value("${property_key_name}")

Guarda il seguente esempio che mostra la sintassi per leggere il file spring.application.name valore della proprietà nella variabile Java utilizzando l'annotazione @Value.

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

Osservare il codice fornito di seguito per una migliore comprensione -

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 la proprietà non viene trovata durante l'esecuzione dell'applicazione, Spring Boot genera l'eccezione Illegal Argument come Could not resolve placeholder 'spring.application.name' in value "${spring.application.name}".

Per risolvere il problema del segnaposto, possiamo impostare il valore predefinito per la proprietà utilizzando la sintassi indicata di seguito:

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

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

Profilo attivo Spring Boot

Spring Boot supporta diverse proprietà in base al profilo Spring attivo. Ad esempio, possiamo mantenere due file separati per lo sviluppo e la produzione per eseguire l'applicazione Spring Boot.

Profilo attivo della molla in application.properties

Cerchiamo di capire come avere il profilo Spring attivo in application.properties. Per impostazione predefinita, application. verranno utilizzate per eseguire l'applicazione Spring Boot. Se desideri utilizzare proprietà basate sul profilo, possiamo mantenere un file delle proprietà separato per ciascun profilo come mostrato di seguito:

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

Durante l'esecuzione del file JAR, è necessario specificare il profilo attivo della molla in base a ciascun file delle proprietà. Per impostazione predefinita, l'applicazione Spring Boot utilizza il file application.properties. Di seguito viene mostrato il comando per impostare il profilo attivo della molla:

È possibile vedere il nome del profilo attivo nel registro della console come mostrato di seguito:

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

Ora, Tomcat è stato avviato sulla porta 9090 (http) come mostrato di seguito -

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

È possibile impostare il profilo attivo di produzione come mostrato di seguito:

È possibile vedere il nome del profilo attivo nel registro della console come mostrato di seguito:

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

Ora, Tomcat è stato avviato sulla porta 4431 (http) come mostrato di seguito -

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

Profilo attivo a molla per application.yml

Cerchiamo di capire come mantenere attivo il profilo Spring per application.yml. Possiamo mantenere le proprietà del profilo attivo Spring nel file singleapplication.ymlfile. Non è necessario utilizzare il file separato come application.properties.

Quello che segue è un codice di esempio per mantenere i profili attivi Spring nel file application.yml. Notare che il delimitatore (---) viene utilizzato per separare ogni profilo nel file 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

Di seguito viene fornito il comando per impostare il profilo attivo di sviluppo:

È possibile vedere il nome del profilo attivo nel registro della console come mostrato di seguito:

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

Ora, Tomcat è stato avviato sulla porta 9090 (http) come mostrato di seguito -

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

Di seguito il comando per impostare il profilo attivo di Produzione:

È possibile vedere il nome del profilo attivo nel registro della console come mostrato di seguito:

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

Questo avvierà Tomcat sulla porta 4431 (http) come mostrato di seguito:

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