Introducció
Spring Boot és un framework basat en Spring que facilita la creació d'aplicacions autònomes, de grau de producció, que "funcionen" amb una configuració mínima. És una extensió del framework Spring que elimina la necessitat de definir configuracions complexes i permet als desenvolupadors centrar-se en la lògica de negoci.
Objectius de Spring Boot
- Simplificar la configuració: Reduir la quantitat de configuració necessària per començar a treballar amb Spring.
- Produir aplicacions autònomes: Crear aplicacions que es poden executar sense necessitat d'un servidor d'aplicacions extern.
- Proporcionar eines de desenvolupament: Oferir eines per facilitar el desenvolupament, com ara el servidor integrat, monitorització, etc.
- Promoure les millors pràctiques: Fomentar l'ús de les millors pràctiques de desenvolupament de programari.
Característiques clau de Spring Boot
-
Configuració automàtica (Auto-Configuration):
- Spring Boot pot configurar automàticament molts aspectes de l'aplicació basant-se en les dependències presents al classpath.
- Exemple: Si tens
spring-boot-starter-web
al teu projecte, Spring Boot configurarà automàticament un servidor web integrat.
-
Starters:
- Els "starters" són un conjunt de dependències que es poden afegir fàcilment al projecte per habilitar funcionalitats específiques.
- Exemple:
spring-boot-starter-data-jpa
per treballar amb JPA i bases de dades.
-
Servidor integrat:
- Spring Boot inclou servidors integrats com Tomcat, Jetty o Undertow, permetent executar l'aplicació com un executable JAR o WAR.
- Exemple: No cal desplegar l'aplicació en un servidor extern, simplement es pot executar amb
java -jar
.
-
Actuator:
- Proporciona endpoints per monitoritzar i gestionar l'aplicació.
- Exemple: Endpoints per veure mètriques, informació de l'aplicació, estat de salut, etc.
-
Spring Initializr:
- Una eina web per generar projectes Spring Boot amb les dependències necessàries.
- Exemple: Pots crear un projecte inicialitzat amb les dependències que necessites en pocs clics.
Avantatges de Spring Boot
- Productivitat: Redueix el temps de configuració i permet als desenvolupadors centrar-se en la lògica de negoci.
- Facilitat d'ús: Configuració mínima i eines integrades que faciliten el desenvolupament.
- Flexibilitat: Tot i la configuració automàtica, permet personalitzar i sobreescriure configuracions segons les necessitats.
- Comunitat i suport: Gran comunitat de desenvolupadors i abundant documentació i recursos.
Exemples pràctics
Exemple 1: Creant una aplicació Spring Boot mínima
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MySpringBootApplication { public static void main(String[] args) { SpringApplication.run(MySpringBootApplication.class, args); } }
Explicació:
@SpringBootApplication
: Aquesta anotació combina tres anotacions importants:@Configuration
,@EnableAutoConfiguration
, i@ComponentScan
.SpringApplication.run(...)
: Llença l'aplicació Spring Boot.
Exemple 2: Afegint un controlador REST
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/hello") public String sayHello() { return "Hello, Spring Boot!"; } }
Explicació:
@RestController
: Marca la classe com un controlador REST.@GetMapping("/hello")
: Mapeja les sol·licituds HTTP GET a/hello
al mètodesayHello
.
Exercici pràctic
Exercici 1: Crear una aplicació Spring Boot bàsica
- Objectiu: Crear una aplicació Spring Boot que mostri un missatge de benvinguda.
- Passos:
- Crea un nou projecte Spring Boot utilitzant Spring Initializr (https://start.spring.io/).
- Selecciona les dependències
Spring Web
. - Genera el projecte i importa'l al teu IDE.
- Crea una classe principal amb l'anotació
@SpringBootApplication
. - Afegeix un controlador REST que retorni un missatge de benvinguda.
- Codi:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication public class WelcomeApplication { public static void main(String[] args) { SpringApplication.run(WelcomeApplication.class, args); } } @RestController class WelcomeController { @GetMapping("/welcome") public String welcome() { return "Benvingut a Spring Boot!"; } }
- Execució:
- Executa l'aplicació i visita
http://localhost:8080/welcome
per veure el missatge de benvinguda.
- Executa l'aplicació i visita
Conclusió
En aquesta secció, hem après què és Spring Boot, les seves característiques clau, avantatges i hem vist alguns exemples pràctics. Ara estem preparats per configurar el nostre entorn de desenvolupament i crear la nostra primera aplicació Spring Boot en el següent tema.
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