Java: Внедрение зависимостей от посторонних объектов? - PullRequest
2 голосов
/ 18 апреля 2009

Я большой поклонник D.I.
В настоящее время я занимаюсь разработкой небольшого проекта, в котором используется D.I. везде
(классический и красивый Д.И. от руки ).

С моей точки зрения есть следующие преимущества:

  • Это интуитивно понятно когда вы к этому привыкли,
  • не влияет на читаемость отрицательно (на самом деле, становится еще лучше) ,
  • но самое главное: если я хочу проверить детали или весь проект с различными реализациями некоторых интерфейсов, я могу сделать это, изменив несколько символов вместо сложного рефакторинга / переименования или других обходных путей.

Но, к сожалению, я не могу понять, как Д.И. может быть использован с иностранными объекты в элегантном виде (без каких-либо рамок, помните, Я делаю Д.И. от руки).

D.I. от руки означает: вы передаете что-то в c-tor . Никаких глобальных заводов или подобных им, не дай Бог!

JAXB, например, создает объекты самостоятельно. Выхода нет сказать JAXBContext: "пожалуйста, используйте следующие параметры для создания моего объекты ". JAXB принимает только c-параметры без параметров.

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 21 апреля 2009

Почему «Д.И. вручную» должно означать «передать что-то в c-tor»?

Не могли бы вы сделать это?

ThingOne one = new ThingOne();
one.setInjectedItem( a );
one.setOtherInjectedItem( b );

В весеннем внедрении зависимостей это будет внедрение через свойство, и я не понимаю, почему это нельзя сделать «вручную».

2 голосов
/ 18 апреля 2009

Разве JAXBContext не использует фабричный метод в любом случае? Вы можете передавать параметры в это, как если бы вы были конструктором. Если это не делает то, что вы хотите, традиционное внедрение сеттера (то есть вызов context.setXyz(xyzInstance) методов) после создания вашего объекта будет эмулировать вручную то, что spring et al. Делает автоматически ...

0 голосов
/ 18 апреля 2009

Люди, как известно, используют для этого геттерную инъекцию . Я не знаю, как это сделать в среде луддитов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...