Welke dependency injection (DI) tools gebruik je in productie?
sobes.tech AI
Antwoord van AI
Ik gebruik meestal GetIt in combinatie met injectable.
GetIt is een eenvoudige Service Locator die gemakkelijk integreert met andere frameworks. Het biedt standaardmethoden voor het registreren van services:
// Registratie van een singleton
GetIt.instance.registerSingleton<ApiService>(ApiService());
// Registratie van een factory
GetIt.instance.registerFactory<UserRepository>(() => UserRepository());
injectable is een codegenerator waarmee je klassen kunt annoteren en code voor GetIt kunt genereren, wat het proces van dependency injection aanzienlijk vereenvoudigt:
// Voorbeeld van annotatie van een klasse voor GetIt met injectable
@lazySingleton
class ApiService {}
// Commando om code voor GetIt te genereren
// flutter pub run build_runner build
De combinatie van deze tools maakt het mogelijk om zowel de voordelen van Service Locator (van GetIt) als Dependency Injection (door automatische codegeneratie met injectable) te benutten, waardoor DI in het project beter beheersbaar en minder foutgevoelig wordt.
Ik heb ook Provider gebruikt voor eenvoudige gevallen of in projecten waar al state management op basis van Provider wordt gebruikt, omdat het ook voor DI kan dienen. Voor grotere bedrijfsapplicaties geef ik echter de voorkeur aan de combinatie GetIt/injectable.