Я не знаю, что существует «официальное» определение. Статья Фаулера была первой частью, которую я прочитал на DI. Если это недостаточно авторитетно для вас, я не вижу, как SO улучшится.
Что для вас значит? Какую часть документации вы прочитали? Вы пробовали писать с ним какие-либо приложения? Вы уже очень хорошо изучили это, если написали код с Spring и Guice. Если вы только что прочитали несколько статей, которые Google вернул, вам нужно сделать больше.
«Контекст» весной означает фабрику, используемую для создания объектов для вас. Обычно у меня есть одно приложение или веб-приложение. Мое приложение обычно является «контекстом», в котором создаются объекты.
«жизненный цикл» ничем не отличается от DI - это связано с тем, когда объект создан, инициализирован, использован и уничтожен.
Компоненты представляют собой данные и операции в одном программном артефакте. Услуги - это специальные виды компонентов, которые выполняют важные для бизнеса операции, обычно распространяемые по сети. Услуги обычно являются компонентами, но не все компоненты являются услугами. Они не синонимы.
Вы можете написать компоненты или услуги без рамки DI. Если это поможет вам называть компоненты инъецируемых объектов, будь моим гостем.
Мне любопытно: почему акцент на именах для этих вещей? Именование, безусловно, важно, но это не основная проблема с DI.
Это не реальный вопрос, сделать это сообщество вики, чтобы избежать закрытия, пожалуйста. Это может помочь задать более одного вопроса, сосредоточив внимание на каждой конкретной детали, чтобы получить правильные ответы. – lothar