DI-установщик против DI-конструктора в Spring?

Spring имеет два двух типа DI: установщик DI и конструктивный DI.

DI на основе конструктора фиксирует порядок, в котором необходимо внедрять зависимости. DI на основе сеттера не предлагает этого.

DI, основанный на сеттере, помогает нам внедрять зависимость только тогда, когда она требуется, а не во время построения.

Я не вижу других существенных различий, поскольку оба типа Spring DI предоставляют одни и те же функции - как установщик, так и конструктор DI вводят зависимость при запуске кода. Конечно, конструктор DI будет делать это через конструктор, в то время как установщик DI будет делать это через сеттер сразу после создания объекта, но это не имеет никакого значения для разработчика с точки зрения производительности и т. Д. Оба также предлагают средства для указания порядка внедрения зависимостей.

Я ищу сценарий, в котором один дает явное преимущество перед другим или когда один тип совершенно непригоден.

25
задан mskfisher 2 November 2011 в 14:28
поделиться

1 ответ

Мои 2 цента. Примите classA с 10 полями, с немного введенных зависимостей . Теперь при необходимости во всем classA со всеми полями затем, можно пойти для инжекция конструктора . Но если Вам нужно только одно из введенного поля для использования в том классе, можно использовать инжекция метода set .

Таким образом,

  1. Вы не создадите новый объект каждый раз.
  2. Вы не должны волновать приблизительно [1 110] круговая зависимость проблема (BeanCurrentlyInCreationException).
  3. Вы не должны будете создавать другие поля для класса A, таким образом, у Вас есть намного более гибкий код
0
ответ дан 28 November 2019 в 20:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: