Injection par setter en Spring Boot

L'injection par setter est une méthode clé dans Spring Boot pour gérer les dépendances entre les composants. Cela permet de créer des applications modulaires et testables. En utilisant cette méthode, vous pouvez facilement définir et modifier des dépendances à l'aide de méthodes setter. Par exemple, dans un projet Spring Boot, vous pourriez avoir une classe de service qui nécessite une instance d'un dépôt pour fonctionner. Au lieu de créer cette instance directement, vous pouvez la passer via un setter. Cela offre une flexibilité et favorise le principe de l'inversion de contrôle. Dans ce qui suit, nous allons explorer un exemple détaillé d'injection par setter.
D'abord, vous avez besoin d'une application Spring Boot de base. Vous pouvez créer un projet à l'aide de Spring Initializr. Ajoutez les dépendances nécessaires comme Spring Web et Spring Data JPA. Ensuite, créez une classe UserRepository qui étend JpaRepository. Cela permettra à votre application de gérer les opérations CRUD sur les utilisateurs.

java
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository public interface UserRepository extends JpaRepository { }

Ensuite, définissez une classe de service UserService qui utilise ce dépôt. Au lieu d'instancier UserRepository directement, nous allons définir un setter pour l'injecter.

java
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserService { private UserRepository userRepository; @Autowired public void setUserRepository(UserRepository userRepository) { this.userRepository = userRepository; } public List getAllUsers() { return userRepository.findAll(); } }

Dans cet exemple, l'annotation @Autowired indique à Spring de gérer l'injection. Vous pouvez maintenant utiliser UserService dans un contrôleur ou ailleurs dans votre application.
Pour finir, créons un contrôleur UserController pour exposer une API REST qui utilise UserService.

java
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController public class UserController { private final UserService userService; @Autowired public UserController(UserService userService) { this.userService = userService; } @GetMapping("/users") public List getAllUsers() { return userService.getAllUsers(); } }

En résumé, l'injection par setter dans Spring Boot permet de créer des applications plus souples et testables. Vous pouvez facilement échanger les dépendances sans modifier le code de la classe. Cela favorise la modularité et le respect des principes de conception de logiciels.

Commentaires populaires
    Pas de commentaires pour l'instant
Commentaires

0