En aquest tema, aprendrem com configurar una aplicació Spring Boot. La configuració és una part essencial de qualsevol aplicació, ja que permet personalitzar el comportament de l'aplicació segons les necessitats específiques. Spring Boot facilita aquesta tasca proporcionant diverses opcions de configuració.
Conceptes Clau
- Fitxers de configuració:
application.properties
iapplication.yml
. - Propietats de configuració: Definició i ús de propietats personalitzades.
- Perfils de configuració: Configuració específica per a diferents entorns (dev, test, prod).
- Classes de configuració: Ús de classes Java per a la configuració avançada.
Fitxers de Configuració
Spring Boot utilitza dos tipus principals de fitxers de configuració:
- application.properties: Un fitxer de propietats senzill.
- application.yml: Un fitxer YAML que permet una estructura més jeràrquica.
Exemple de application.properties
server.port=8081 spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=secret
Exemple de application.yml
server: port: 8081 spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: secret
Propietats de Configuració
Definició de Propietats Personalitzades
Pots definir propietats personalitzades en els fitxers de configuració i accedir-hi des del teu codi Java.
application.properties
Accés a les Propietats en Java
import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class MyAppConfig { @Value("${myapp.feature.enabled}") private boolean featureEnabled; @Value("${myapp.service.url}") private String serviceUrl; // Getters and setters public boolean isFeatureEnabled() { return featureEnabled; } public String getServiceUrl() { return serviceUrl; } }
Perfils de Configuració
Els perfils permeten definir configuracions específiques per a diferents entorns. Per exemple, pots tenir configuracions diferents per a desenvolupament, proves i producció.
Definició de Perfils
application-dev.properties
application-prod.properties
Activació de Perfils
Pots activar un perfil específic mitjançant la línia de comandes o en el fitxer application.properties
.
Línia de Comandes
application.properties
Classes de Configuració
Per a configuracions més avançades, pots utilitzar classes Java anotades amb @Configuration
.
Exemple de Classe de Configuració
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DriverManagerDataSource; import javax.sql.DataSource; @Configuration public class DataSourceConfig { @Bean public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mydb"); dataSource.setUsername("root"); dataSource.setPassword("secret"); return dataSource; } }
Exercicis Pràctics
Exercici 1: Configuració Bàsica
-
Crea un fitxer
application.properties
amb les següents propietats:server.port=9090 app.name=MySpringBootApp
-
Crea una classe Java per accedir a aquestes propietats i imprimeix-les en el mètode
main
.
Solució
import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.stereotype.Component; @SpringBootApplication public class MySpringBootApp { public static void main(String[] args) { SpringApplication.run(MySpringBootApp.class, args); } } @Component class AppConfig implements CommandLineRunner { @Value("${server.port}") private int serverPort; @Value("${app.name}") private String appName; @Override public void run(String... args) throws Exception { System.out.println("Server Port: " + serverPort); System.out.println("App Name: " + appName); } }
Exercici 2: Perfils de Configuració
- Crea dos fitxers de configuració:
application-dev.properties
iapplication-prod.properties
. - Defineix propietats diferents en cada fitxer.
- Activa el perfil
dev
i imprimeix les propietats configurades.
Solució
application-dev.properties
application-prod.properties
application.properties
Classe Java
import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.stereotype.Component; @SpringBootApplication public class MySpringBootApp { public static void main(String[] args) { SpringApplication.run(MySpringBootApp.class, args); } } @Component class AppConfig implements CommandLineRunner { @Value("${server.port}") private int serverPort; @Value("${app.environment}") private String environment; @Override public void run(String... args) throws Exception { System.out.println("Server Port: " + serverPort); System.out.println("Environment: " + environment); } }
Conclusió
En aquesta secció, hem après com configurar una aplicació Spring Boot utilitzant fitxers de configuració, propietats personalitzades, perfils de configuració i classes de configuració. La configuració adequada és crucial per assegurar que l'aplicació funcioni correctament en diferents entorns i sota diferents condicions. En el proper mòdul, explorarem les propietats de Spring Boot en més detall.
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