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

  1. Fitxers de configuració: application.properties i application.yml.
  2. Propietats de configuració: Definició i ús de propietats personalitzades.
  3. Perfils de configuració: Configuració específica per a diferents entorns (dev, test, prod).
  4. 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ó:

  1. application.properties: Un fitxer de propietats senzill.
  2. 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

myapp.feature.enabled=true
myapp.service.url=https://api.example.com

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

server.port=8082
spring.datasource.url=jdbc:mysql://localhost:3306/devdb

application-prod.properties

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/proddb

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

java -jar myapp.jar --spring.profiles.active=dev

application.properties

spring.profiles.active=dev

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

  1. Crea un fitxer application.properties amb les següents propietats:

    server.port=9090
    app.name=MySpringBootApp
    
  2. 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ó

  1. Crea dos fitxers de configuració: application-dev.properties i application-prod.properties.
  2. Defineix propietats diferents en cada fitxer.
  3. Activa el perfil dev i imprimeix les propietats configurades.

Solució

application-dev.properties

server.port=8082
app.environment=development

application-prod.properties

server.port=8080
app.environment=production

application.properties

spring.profiles.active=dev

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

Mòdul 2: Conceptes bàsics de Spring Boot

Mòdul 3: Construint serveis web RESTful

Mòdul 4: Accés a dades amb Spring Boot

Mòdul 5: Seguretat a Spring Boot

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ó

Mòdul 10: Millors pràctiques i consells

© Copyright 2024. Tots els drets reservats