Par exemple, supposons que mon adaptateur Rest créé avec Retrofit réside dans la classe Application. J'aimerais obtenir à l'intérieur de l'activité, donc j'écrire le code suivant:Is not Dagger 2 pour Android n'est pas le cadre DI, mais glorifié Service Locator?
public class MainActivity extends Activity {
@Inject MyRestAdapter mRestAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((GlobalApplication) getApplication()).getComponent().inject(this);
}
}
Accordée, il fera le travail. Mais ... En quoi est-ce différent de l'appel de getApplication(), puis explicitement le MyRestAdapter à MainActivity? Oui, Dagger 2 simplifiera la configuration en envoyant automatiquement tout à l'activité, mais vous devez toujours indiquer explicitement d'où vous avez besoin de ces dépendances, et cela, si je comprends bien, va à l'encontre du but de DI. Ai-je raison de dire que Dagger 2 est un "localisateur de services semi-automatique", ou que ce sont les didacticiels qui m'ont induit en erreur et qu'il y a moyen d'injecter des dépendances avec Dagger 2 dans la vue ou l'activité?
Bien dit, Dagger 2 n'est pas le DI réel. La plupart des tutoriels ou des blogs arrivent à la conclusion que vous pouvez Injecter mais ignorer cette douleur à propos du tissage de dépendance, ce qui contredit les concepts de modèle de conception de l'IoC. – vijay