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?
Réponses
Trop de publicités?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.
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.
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 new
s à 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.
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.