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

  1. @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);
    }
}

  1. @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!";
    }
}

  1. @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!";
    }
}

  1. @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;
    }
}

  1. @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

  1. Crea una nova classe GreetingController amb l'anotació @RestController.
  2. Defineix un mètode greet que retorni un missatge de benvinguda.
  3. 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

  1. Crea una classe GreetingService amb un mètode getGreeting que retorni un missatge de benvinguda.
  2. Anota la classe amb @Service.
  3. Injecta el servei en el GreetingController utilitzant @Autowired.
  4. 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

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