Sobes.tech
Middle

Aké nástroje na injekciu závislostí (DI) používate v produkcii?

sobes.tech AI

Odpoveď od AI

Najčastejšie používam GetIt v kombinácii s injectable.

GetIt je jednoduchý Service Locator, ktorý sa ľahko integruje s inými frameworkmi. Poskytuje štandardné metódy na registráciu služieb:

// Registrácia singletonu
GetIt.instance.registerSingleton<ApiService>(ApiService());

// Registrácia továrne
GetIt.instance.registerFactory<UserRepository>(() => UserRepository());

injectable je generátor kódu, ktorý umožňuje anotovať triedy a generovať kód pre GetIt, čo značne zjednodušuje proces vkladania závislostí:

// Príklad anotácie triedy pre GetIt s pomocou injectable
@lazySingleton
class ApiService {}

// Príkaz na generovanie kódu pre GetIt
// flutter pub run build_runner build

Kombinácia týchto nástrojov umožňuje využiť výhody ako Service Locator (z GetIt), tak Dependency Injection (vďaka automatickému generovaniu kódu s injectable), čím je DI v projekte lepšie spravovateľný a menej náchylný na chyby.

Používal som aj Provider pre jednoduché prípady alebo v projektoch, kde už existuje správa stavu na základe Provider, pretože môže slúžiť aj na DI. Avšak pre väčšie podnikové aplikácie dávam prednosť páru GetIt/injectable.