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
GreetingControlleramb l'anotació@RestController. - Defineix un mètode
greetque retorni un missatge de benvinguda. - Utilitza l'anotació
@GetMappingper 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
GreetingServiceamb un mètodegetGreetingque retorni un missatge de benvinguda. - Anota la classe amb
@Service. - Injecta el servei en el
GreetingControllerutilitzant@Autowired. - Modifica el mètode
greetdel 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
@Autowiredcorrectament, el que pot provocar errors de dependència no satisfeta.
Consells
- Utilitza anotacions especialitzades (
@Service,@Repository) en lloc de@Componentper millorar la llegibilitat del codi. - Assegura't que les classes anotades amb
@Component,@Serviceo@Repositoryes 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
