Injection par Constructeur
Les dépendances sont fournies via le constructeur de la classe.
L’Injection de Dépendances (DI) est un modèle de conception et une forme d’Inversion de Contrôle (IoC) où un objet reçoit ses dépendances d’une source externe plutôt que de les créer lui-même. La DI favorise le couplage lâche, la testabilité et la modularité.
Injection par Constructeur
Les dépendances sont fournies via le constructeur de la classe.
Injection par Setter
Les dépendances sont fournies via des méthodes de type setter.
Injection par Interface
Les dépendances sont fournies via une méthode d’interface.
// Injection par Constructeur@Servicepublic class UserService {private final UserRepository userRepository;
@Autowiredpublic UserService(UserRepository userRepository) {this.userRepository = userRepository;}}
// Injection par Setter@Servicepublic class UserService {private UserRepository userRepository;
@Autowiredpublic void setUserRepository(UserRepository userRepository) {this.userRepository = userRepository;}}// Injection par Constructeurpublic class UserService{ private readonly IUserRepository _userRepository;
public UserService(IUserRepository userRepository){ _userRepository = userRepository;}}
// Enregistrement des Dépendances dans Startup.cspublic void ConfigureServices(IServiceCollection services){ services.AddScoped<IUserRepository, UserRepository>(); services.AddScoped<UserService>();}// Injection par Constructeur@Controller('users')export class UserController {constructor(private userService: UserService) {}
@Get()findAll() {return this.userService.findAll();}}
// Enregistrement des Dépendances dans un Module@Module({providers: [UserService, UserRepository],controllers: [UserController],})export class AppModule {}| Avantages | Inconvénients |
|---|---|
| Réduit le couplage entre les composants | Peut introduire de la complexité si mal utilisé |
| Rend les applications plus testables et modulaires | Nécessite l’apprentissage d’un framework ou conteneur DI |
| Facilite le changement d’implémentations | Peut conduire à un comportement “magique” si utilisé sans précaution |