Ich weiß nicht, dass es eine 'offizielle' Definition gibt. Fowlers Artikel war das erste Stück, das ich auf DI gelesen habe. Wenn das nicht autoritativ genug für Sie ist, sehe ich nicht, wie SO das verbessern wird.
Was bedeutet 'durchgesehen' für Sie? Wie viel von der Dokumentation hast du gelesen? Haben Sie versucht, irgendwelche Anwendungen damit zu schreiben? Sie haben das schon ziemlich gut selbst untersucht, wenn Sie Code mit Spring und Guice geschrieben haben. Wenn Sie gerade ein paar Artikel gelesen haben, die Google mitgebracht hat, haben Sie mehr zu tun.
"Kontext" im Frühling bedeutet die Fabrik, die verwendet wird, um Objekte für Sie zu instanziieren. Ich habe normalerweise eine pro Anwendung oder Web-App. Meine Anwendung ist normalerweise der "Kontext", in dem Objekte erstellt werden.
"Lifecycle" ist nicht anders für DI - es hat damit zu tun, wenn ein Objekt erstellt, initialisiert, verwendet und zerstört wird.
Komponenten sind Daten und Operationen in einem einzigen Softwareartefakt. Dienste sind spezielle Arten von Komponenten, die geschäftsrelevante Vorgänge ausführen, die normalerweise in einem Netzwerk verteilt sind. Dienste sind normalerweise Komponenten, aber nicht alle Komponenten sind Dienste. Sie sind keine Synonyme.
Sie können Komponenten oder Services ohne ein DI-Framework schreiben. Wenn es Ihnen hilft, injizierte Objekte als "Komponenten" zu bezeichnen, seien Sie mein Gast.
Ich bin neugierig: Warum die Betonung auf Namen für diese Dinge? Die Benennung ist sicherlich wichtig, aber es ist nicht das primäre Problem mit DI.
Dies ist keine wirkliche Frage, machen diese Community Wiki Schließung zu vermeiden, bitte. Es kann hilfreich sein, mehr als eine Frage zu stellen, die sich jeweils auf ein bestimmtes Detail konzentriert, um die richtigen Antworten zu erhalten. – lothar