77 votes

Comment ferait-on une injection de dépendance en scala?

Je suis encore au début de l'apprentissage de la scala en plus de Java et je ne l'ai pas compris. Comment peut-on y faire de l'ID? puis-je ou dois-je utiliser une bibliothèque DI existante, doit-elle être effectuée manuellement ou existe-t-il un autre moyen?

63voto

Dan Story Points 4836

Les frameworks Java DI standard fonctionnent généralement avec Scala, mais vous pouvez également utiliser des constructions de langage pour obtenir le même effet sans dépendances externes.

15voto

Allan Erskine Points 199

Une nouvelle injection de dépendance de la bibliothèque spécifiquement pour la Scala est la Bite du Mur de SubCut.

Alors que les Jonas Bonér article référencé dans Dan l'Histoire de la réponse met l'accent sur la compilation lié instances et statique d'injection (via mix-ins), SubCut est basée sur l'exécution de l'initialisation de l'immuable modules, et de la dynamique de l'injection par l'interrogation de la limite des modules par type, noms de chaîne, ou scala.Les noms de symboles.

Vous pouvez lire plus au sujet de la comparaison avec le modèle de Gâteau dans le GettingStarted document.

9voto

adamw Points 1878

L'Injection de dépendance elle-même peut être fait sans aucun outil, de cadre ou de la prise en charge du conteneur. Vous avez seulement besoin de supprimer news à partir de votre code et de les déplacer pour les constructeurs. L'un fastidieux partie qui reste est le câblage le objets à "la fin du monde", où les conteneurs aider beaucoup.

Mais avec Scala 2.10 macros, vous pouvez générer le code de câblage au moment de la compilation et de l'auto-câblage et de sécurité du type.

Voir l' Injection de Dépendance dans Scala Guide

1voto

Marcelo Cantos Points 91211

Je ne l'ai pas déjà fait moi-même, mais la plupart des frameworks DI fonctionnent au niveau du bytecode (AFAIK), il devrait donc être possible de les utiliser avec n'importe quel langage JVM.

0voto

rintcius Points 1223

En plus de la réponse de Dan Story, j’ai écrit un blog sur une variante de DI qui utilise également des constructions de langage mais qui n’est pas mentionnée dans le post de Jonas: Value Injection on Traits . Ce modèle fonctionne très bien pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X