Les anotacions són una part fonamental de Spring Boot, ja que permeten configurar i gestionar els components de l'aplicació de manera declarativa. En aquest tema, explorarem les anotacions més importants i com utilitzar-les per crear aplicacions eficients i ben estructurades.
Objectius del tema
- Entendre què són les anotacions i per què són importants en Spring Boot.
- Conèixer les anotacions més utilitzades en Spring Boot.
- Aprendre a aplicar aquestes anotacions en exemples pràctics.
Què són les anotacions?
Les anotacions són metadades que es poden afegir al codi per proporcionar informació addicional al compilador o al runtime. En Spring Boot, les anotacions s'utilitzen per configurar components, serveis, repositoris, controladors, etc., de manera declarativa.
Anotacions més comunes en Spring Boot
- @SpringBootApplication
L'anotació @SpringBootApplication
és una combinació de tres anotacions:
@Configuration
: Indica que la classe és una font de configuració de beans.@EnableAutoConfiguration
: Habilita la configuració automàtica de Spring Boot.@ComponentScan
: Habilita l'escaneig de components a partir del paquet on es troba la classe anotada.
Exemple:
@SpringBootApplication public class MySpringBootApplication { public static void main(String[] args) { SpringApplication.run(MySpringBootApplication.class, args); } }
- @RestController
L'anotació @RestController
s'utilitza per definir una classe com a controlador RESTful. Combina les anotacions @Controller
i @ResponseBody
.
Exemple:
@RestController public class MyController { @GetMapping("/hello") public String sayHello() { return "Hello, World!"; } }
- @RequestMapping
L'anotació @RequestMapping
s'utilitza per mapar sol·licituds HTTP a mètodes de controladors. Es pot utilitzar a nivell de classe i de mètode.
Exemple:
@RestController @RequestMapping("/api") public class ApiController { @RequestMapping("/greet") public String greet() { return "Greetings from Spring Boot!"; } }
- @Autowired
L'anotació @Autowired
s'utilitza per injectar dependències automàticament. Pot ser aplicada a constructors, mètodes, camps i mètodes de configuració.
Exemple:
@Service public class MyService { private final MyRepository myRepository; @Autowired public MyService(MyRepository myRepository) { this.myRepository = myRepository; } }
- @Component, @Service, @Repository
Aquestes anotacions s'utilitzen per marcar classes com a components gestionats per Spring. @Component
és una anotació genèrica, mentre que @Service
i @Repository
són especialitzacions per serveis i repositoris, respectivament.
Exemple:
@Component public class MyComponent { // Codi del component } @Service public class MyService { // Codi del servei } @Repository public interface MyRepository extends JpaRepository<MyEntity, Long> { // Codi del repositori }
Exercicis pràctics
Exercici 1: Crear un controlador RESTful
- Crea una nova classe
GreetingController
amb l'anotació@RestController
. - Defineix un mètode
greet
que retorni un missatge de benvinguda. - Utilitza l'anotació
@GetMapping
per mapar el mètode a l'URL/greet
.
Solució:
@RestController public class GreetingController { @GetMapping("/greet") public String greet() { return "Welcome to Spring Boot!"; } }
Exercici 2: Injectar un servei en un controlador
- Crea una classe
GreetingService
amb un mètodegetGreeting
que retorni un missatge de benvinguda. - Anota la classe amb
@Service
. - Injecta el servei en el
GreetingController
utilitzant@Autowired
. - Modifica el mètode
greet
del controlador per utilitzar el servei.
Solució:
@Service public class GreetingService { public String getGreeting() { return "Welcome to Spring Boot!"; } } @RestController public class GreetingController { private final GreetingService greetingService; @Autowired public GreetingController(GreetingService greetingService) { this.greetingService = greetingService; } @GetMapping("/greet") public String greet() { return greetingService.getGreeting(); } }
Errors comuns i consells
Errors comuns
- No anotar correctament les classes o mètodes, el que pot provocar que Spring no els detecti.
- No utilitzar
@Autowired
correctament, el que pot provocar errors de dependència no satisfeta.
Consells
- Utilitza anotacions especialitzades (
@Service
,@Repository
) en lloc de@Component
per millorar la llegibilitat del codi. - Assegura't que les classes anotades amb
@Component
,@Service
o@Repository
es trobin dins del paquet escanejat per Spring.
Conclusió
Les anotacions són una eina poderosa en Spring Boot que permeten configurar i gestionar components de manera declarativa. En aquest tema, hem explorat les anotacions més comunes i hem vist com utilitzar-les en exemples pràctics. Amb aquesta base, estàs preparat per aprofundir en altres aspectes de Spring Boot i construir aplicacions robustes i escalables.
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