Injection par setter en Spring Boot
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.javaimport 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.
javaimport 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
.
javaimport 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