Introducció
Els perfils de Spring Boot són una característica poderosa que permet configurar diferents entorns d'execució per a la teva aplicació. Això és especialment útil quan necessites tenir configuracions diferents per a desenvolupament, proves i producció. En aquest tema, aprendrem què són els perfils de Spring Boot, com configurar-los i com utilitzar-los de manera efectiva.
Què són els perfils de Spring Boot?
Els perfils de Spring Boot permeten definir diferents conjunts de configuracions que es poden activar o desactivar segons l'entorn en què s'executi l'aplicació. Això facilita la gestió de configuracions específiques per a diferents entorns, com ara:
- Desenvolupament: Configuracions que només s'utilitzen durant el desenvolupament.
- Proves: Configuracions específiques per a l'execució de proves.
- Producció: Configuracions que s'utilitzen en l'entorn de producció.
Configurant perfils de Spring Boot
- Definint perfils en el fitxer
application.properties
application.properties
Spring Boot permet definir configuracions específiques per a cada perfil en fitxers de propietats separats. Per exemple, pots tenir els següents fitxers de propietats:
application.properties
: Configuració per defecte.application-dev.properties
: Configuració per a l'entorn de desenvolupament.application-test.properties
: Configuració per a l'entorn de proves.application-prod.properties
: Configuració per a l'entorn de producció.
- Exemple de configuració
Suposem que tenim una aplicació que necessita configurar una base de dades diferent per a cada entorn. Podem definir les configuracions de la següent manera:
application.properties
spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.username=sa spring.datasource.password=password
application-dev.properties
spring.datasource.url=jdbc:mysql://localhost:3306/devdb spring.datasource.username=devuser spring.datasource.password=devpassword
application-test.properties
spring.datasource.url=jdbc:mysql://localhost:3306/testdb spring.datasource.username=testuser spring.datasource.password=testpassword
application-prod.properties
spring.datasource.url=jdbc:mysql://localhost:3306/proddb spring.datasource.username=produser spring.datasource.password=prodpassword
- Activant perfils
Pots activar un perfil específic de diverses maneres:
A. Utilitzant la línia de comandes
Quan inicies l'aplicació des de la línia de comandes, pots especificar el perfil a utilitzar amb l'opció --spring.profiles.active
. Per exemple:
B. Utilitzant variables d'entorn
També pots definir el perfil actiu utilitzant una variable d'entorn:
C. Utilitzant el fitxer application.properties
Pots definir el perfil actiu directament en el fitxer application.properties
:
Exemple pràctic
A continuació, es mostra un exemple pràctic d'una aplicació Spring Boot que utilitza perfils per configurar diferents bases de dades segons l'entorn.
- Creant l'estructura del projecte
Crea un projecte Spring Boot amb la següent estructura:
src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ ├── DemoApplication.java │ │ └── controller/ │ │ └── HelloController.java │ └── resources/ │ ├── application.properties │ ├── application-dev.properties │ ├── application-test.properties │ └── application-prod.properties
- Implementant el controlador
DemoApplication.java
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
HelloController.java
package com.example.demo.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @Value("${spring.datasource.url}") private String datasourceUrl; @GetMapping("/hello") public String hello() { return "Datasource URL: " + datasourceUrl; } }
- Configurant els fitxers de propietats
application.properties
spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.username=sa spring.datasource.password=password
application-dev.properties
spring.datasource.url=jdbc:mysql://localhost:3306/devdb spring.datasource.username=devuser spring.datasource.password=devpassword
application-test.properties
spring.datasource.url=jdbc:mysql://localhost:3306/testdb spring.datasource.username=testuser spring.datasource.password=testpassword
application-prod.properties
spring.datasource.url=jdbc:mysql://localhost:3306/proddb spring.datasource.username=produser spring.datasource.password=prodpassword
- Executant l'aplicació amb diferents perfils
Per executar l'aplicació amb el perfil de desenvolupament, utilitza la línia de comandes:
Exercici pràctic
Exercici
-
Crea un nou perfil anomenat
staging
amb les següents configuracions:- URL de la base de dades:
jdbc:mysql://localhost:3306/stagingdb
- Nom d'usuari:
staginguser
- Contrasenya:
stagingpassword
- URL de la base de dades:
-
Modifica el controlador
HelloController
per retornar també el nom d'usuari de la base de dades. -
Executa l'aplicació amb el perfil
staging
i verifica que les configuracions es carreguen correctament.
Solució
application-staging.properties
spring.datasource.url=jdbc:mysql://localhost:3306/stagingdb spring.datasource.username=staginguser spring.datasource.password=stagingpassword
HelloController.java
package com.example.demo.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @Value("${spring.datasource.url}") private String datasourceUrl; @Value("${spring.datasource.username}") private String datasourceUsername; @GetMapping("/hello") public String hello() { return "Datasource URL: " + datasourceUrl + ", Username: " + datasourceUsername; } }
Per executar l'aplicació amb el perfil staging
, utilitza la línia de comandes:
Conclusió
Els perfils de Spring Boot són una eina essencial per gestionar configuracions específiques per a diferents entorns. Amb aquesta funcionalitat, pots assegurar-te que la teva aplicació s'executi correctament en qualsevol entorn, des de desenvolupament fins a producció. Practica amb els exercicis proporcionats per familiaritzar-te amb l'ús de perfils i millorar la teva capacitat per gestionar configuracions en aplicacions Spring Boot.
Curs de Spring Boot
Mòdul 1: Introducció a Spring Boot
- Què és Spring Boot?
- Configuració del teu entorn de desenvolupament
- Creant la teva primera aplicació Spring Boot
- Entenent l'estructura del projecte Spring Boot
Mòdul 2: Conceptes bàsics de Spring Boot
- Anotacions de Spring Boot
- Injecció de dependències a Spring Boot
- Configuració de Spring Boot
- Propietats de Spring Boot
Mòdul 3: Construint serveis web RESTful
- Introducció als serveis web RESTful
- Creant controladors REST
- Gestionant mètodes HTTP
- Gestió d'excepcions en REST
Mòdul 4: Accés a dades amb Spring Boot
- Introducció a Spring Data JPA
- Configuració de fonts de dades
- Creant entitats JPA
- Utilitzant repositoris de Spring Data
- Mètodes de consulta a Spring Data JPA
Mòdul 5: Seguretat a Spring Boot
- Introducció a Spring Security
- Configuració de Spring Security
- Autenticació i autorització d'usuaris
- Implementant autenticació JWT
Mòdul 6: Proves a Spring Boot
Mòdul 7: Funcions avançades de Spring Boot
Mòdul 8: Desplegant aplicacions Spring Boot
Mòdul 9: Rendiment i monitorització
- Optimització del rendiment
- Monitorització amb Spring Boot Actuator
- Utilitzant Prometheus i Grafana
- Gestió de registres i logs