Внедрение конструктора против внедрения сеттера: разница и сравнение

Когда разрешение зависимостей выполняется внешним агентом, а не самим классом, это называется внедрением зависимостей.

В среде Spring поддерживаются два стандартных способа внедрения зависимостей: через аргумент конструктора или с помощью метода установки.

Первый тип внедрения зависимостей известен как конструктор инъекция, а последняя известна как инъекция сеттера. Оба метода используются для разных целей и имеют свои плюсы и минусы.

Основные выводы

  1. Внедрение конструктора обеспечивает полное создание объекта со всеми зависимостями; инъекция сеттера позволяет частично создавать объект.
  2. Внедрение конструктора способствует неизменности; инъекция сеттера позволяет изменять объекты.
  3. Внедрение конструктора предотвращает циклические зависимости; инъекция сеттера может привести к циклическим зависимостям.

Инъекция конструктора против инъекции сеттера 

Внедрение конструктора — это тип внедрения зависимостей в инфраструктуре Spring, который использует конструктор для внедрения зависимости. Внедрение установщика — это тип внедрения зависимостей в инфраструктуре Spring, который использует методы установки для внедрения зависимости. Он может вводить частичную зависимость и является более гибким.

Инъекция конструктора против инъекции сеттера

Внедрение конструктора — это тип внедрения зависимостей в инфраструктуре Spring, который использует конструктор для внедрения зависимости. Зависимости, необходимые для любого из классов, указываются в качестве параметров конструктора этого конкретного класса.

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

Внедрение установщика — это тип внедрения зависимостей в среде Spring, который использует методы установки для внедрения зависимости. У него есть методы-установщики вида set XYZ(), где XYZ обозначает зависимость, которая внедряет зависимые объекты в клиент.

Этот способ разрешения зависимости очень распространен в среде Spring.

Сравнительная таблица

Параметры сравненияВнедрение конструктораИнъекция сеттера 
Зависимость введенаОн использует конструктор.Он использует методы установки.
читабельностьЭто не очень читабельно по сравнению с сеттером.Это более читабельно.
Переопределить свойствоНевозможно переопределить зависимость.Может переопределять определенные зависимости.
измененияОн всегда создает новый экземпляр компонента.Он не создает новый экземпляр компонента.
неизменностьОн поддерживает неизменность.Он не поддерживает.

Что такое внедрение конструктора?

Внедрение конструктора — это один из стандартных способов разрешения зависимости в среде Spring, который статически определяет список зависимостей, необходимых для классов, путем назначения их в качестве параметров конструктору класса.

Читайте также:  AK 47 против INSAS: разница и сравнение

Все классы, требующие зависимости, должны иметь внутри себя общедоступный конструктор, который принимает экземпляр в качестве аргумента конструктора, и этот конструктор обязательно должен быть единственным общедоступным конструктором внутри этого класса.

Если есть необходимость в более чем одной зависимости, то дополнительные аргументы должны быть добавлены в тот же конструктор. Следует соблюдать принцип единой ответственности, чтобы гарантировать полное введение зависимости, в котором говорится, что члены должны делать только одну вещь.

Конструктор должен быть свободен от какой-либо другой логики, чтобы сделать конструктор классов более быстрым и надежным.

Одним из важных фактов внедрения конструктора является то, что объекты не будут созданы, пока не будут готовы все зависимости. Поскольку он создает новые экземпляры каждый раз, когда вызывается конструктор, переопределение в нем невозможно.

Внедрение в конструктор в основном используется в тех случаях, когда есть необходимость создать объекты со всеми зависимостями. Это наиболее применимый и простой способ корректной реализации зависимостей.

внедрение конструктора

Что такое сеттер-инъекция?

Внедрение установщика — это один из стандартных способов разрешения зависимостей в среде Spring, который использует методы установщика для разрешения зависимостей. Методы установки имеют вид set XYZ(), где XYZ указывает зависимость, которую необходимо внедрить.

В этом типе метода внедрения сначала создается объект, а затем внедряется зависимость. Для настройки Spring, XML используются файлы; таким образом, удобочитаемость является большой проблемой.

Поскольку методы-установщики имеют определенную форму имен методов, это во многих отношениях улучшает читабельность. Когда есть необходимость внедрить большее количество зависимостей, то тип внедрения сеттера очень предпочтителен и предпочтителен по сравнению с другими типами методов внедрения.

В дополнение к этому, используя инъекцию сеттера, разработчики могут легко переопределять и изменять значения, поскольку при этом не создается каждый раз новый экземпляр компонента. Единственным недостатком внедрения сеттера является то, что оно не обеспечивает полного внедрения зависимостей.

Читайте также:  Алпразолам против лоразепама: разница и сравнение

Нет никакой гарантии относительно того, внедрена ли в определенный объект зависимость или нет. Другими словами, это означает, что может быть объект с неполной зависимостью. Внедрение сеттера — наиболее гибкий и распространенный способ реализации внедрения зависимостей.

сеттер инъекций

Основные различия между внедрением конструктора и внедрением сеттера 

  1. Когда внедрение конструктора используется для внедрения зависимости, это делается с помощью конструктора в любом bean-компоненте, управляемом Spring, тогда как внедрение Setter использует методы setter, такие как set dependency(), с целью внедрения зависимости в любой из bean-компонентов, управляемых контейнером IOC Spring.
  2. Внедрение установщика более читабельно по сравнению с внедрением конструктора, поскольку имя метода установщика всегда начинается с набора слов, например setXYZ(), и поэтому его легко читать в Spring. XML config и интерпретировать устанавливаемую зависимость, тогда как внедрение конструктора использует индекс для внедрения зависимости.
  3. Некоторые зависимости можно переопределить с помощью внедрения сеттера, тогда как это невозможно с помощью внедрения конструктора, поскольку каждый раз при вызове конструктора создается новый объект.
  4. Используя инъекцию установщика, значение можно легко изменить, так как он не создает новых экземпляров компонента, тогда как при использовании инъекции конструктора это не так, поскольку он всегда создает новый экземпляр компонента.
  5. Внедрение конструктора поддерживает неизменность, тогда как внедрение сеттера, с другой стороны, не поддерживает неизменность.
Рекомендации
  1. https://digitalcommons.calpoly.edu/csse_fac/34/
  2. https://books.google.com/books?hl=en&lr=&id=InfRDwAAQBAJ&oi=fnd&pg=PA63&dq=constructor+injection&ots=Hon_bCw-Kv&sig=VdsD_S0lCfP3D8idI8q4F6RnhoE

Последнее обновление: 19 июля 2023 г.

точка 1
Один запрос?

Я приложил столько усилий, чтобы написать этот пост в блоге, чтобы предоставить вам ценность. Это будет очень полезно для меня, если вы подумаете о том, чтобы поделиться им в социальных сетях или со своими друзьями/родными. ДЕЛИТЬСЯ ♥️

25 мыслей о «Внедрении в конструктор и внедрении в сеттер: разница и сравнение»

  1. Объяснения внедрения конструкторов и установщиков подчеркивают важность правильного управления объектными зависимостями для надежной и удобной в сопровождении разработки программного обеспечения.

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

      Ответить
    • Хорошо сформулировал, Vcox. Эффективное управление зависимостями является важнейшим аспектом разработки масштабируемых и поддерживаемых приложений.

      Ответить
  2. Подробная информация о внедрении конструкторов и установщиков дает разработчикам четкое представление о том, как эффективно управлять зависимостями в приложениях платформы Spring.

    Ответить
    • Точно, Роджерс, Наташа. Понимание тонкостей методов внедрения зависимостей имеет решающее значение для поддержания чистоты и масштабируемости кодовых баз.

      Ответить
  3. Удивительно, как инъекции конструкторов и установщиков предлагают различные уровни поддержки неизменяемости и циклических зависимостей, влияя на дизайн и поведение приложения.

    Ответить
    • Абсолютно, Кристиан13. Потенциал циклических зависимостей и неизменяемость объектов должны быть центральными факторами при выборе метода внедрения зависимостей.

      Ответить
    • Я не могу не согласиться, Christian13. Последствия этих различий для общей архитектуры системы существенны и должны быть тщательно рассмотрены.

      Ответить
  4. В сравнительной таблице представлен краткий обзор плюсов и минусов внедрения конструктора и установщика, что упрощает принятие решения о том, какой из них использовать в разных контекстах.

    Ответить
    • Абсолютно, Аморрис. При выборе метода внедрения важно взвесить компромиссы между неизменностью, читабельностью и полнотой создания объекта.

      Ответить
    • Я ценю подробное сравнение. Это помогает разработчикам принимать обоснованные решения, исходя из конкретных требований приложения.

      Ответить
  5. Углубленные объяснения внедрения конструкторов и установщиков дают ценную информацию о различиях и вариантах использования каждого подхода.

    Ответить
    • Хорошо сказано, Даррен. Понимание фундаментальных концепций и последствий методов внедрения зависимостей имеет решающее значение для разработчиков при создании надежных и удобных в обслуживании систем.

      Ответить
  6. Подробные объяснения внедрения конструкторов и установщиков проливают свет на компромисс между полнотой создания объекта и гибкостью в управлении зависимостями.

    Ответить
    • Абсолютно, Eden60. Баланс между полнотой и гибкостью внедрения зависимостей имеет решающее значение для разработки масштабируемых и удобных в обслуживании программных приложений.

      Ответить
    • Красиво подытожено, Eden60. Понимание этих компромиссов необходимо для принятия обоснованных решений о проектировании и архитектуре программных систем.

      Ответить
  7. Сравнение внедрения конструктора и установщика дает разработчикам четкое понимание влияния каждого метода на общий дизайн и поведение приложения.

    Ответить
    • Хорошо сказано, Беги. Понимание последствий различных методов внедрения зависимостей имеет решающее значение для разработки надежных и удобных в обслуживании программных решений.

      Ответить
  8. Сравнение внедрения конструктора и установщика показывает, что оба подхода имеют явные преимущества и влияют на общий дизайн и поведение приложения.

    Ответить
    • Абсолютно, Крогерс. Для принятия обоснованных проектных решений важно оценить конкретные требования и последствия каждого метода впрыска.

      Ответить
  9. Углубленные объяснения внедрения конструкторов и установщиков предоставляют разработчикам ценную информацию о том, как эффективно проектировать сложные зависимости и управлять ими.

    Ответить
    • Хорошо сказано, Арчи30. Глубокое понимание методов внедрения зависимостей имеет решающее значение для разработки надежных и легко поддерживаемых архитектур программного обеспечения.

      Ответить
  10. Отличное объяснение! Оба метода внедрения зависимостей имеют свои преимущества и недостатки, которые необходимо тщательно учитывать в каждом проекте.

    Ответить
    • Согласен, Ава. Внедрение через конструктор — отличный выбор, когда необходимо обеспечить полное создание объекта со всеми зависимостями, тогда как внедрение через установщик более гибко, но не гарантирует полного внедрения зависимостей.

      Ответить
    • Спасибо за четкое объяснение. Важно оценить конкретные потребности проекта, чтобы определить наиболее подходящий метод внедрения зависимостей.

      Ответить

Оставьте комментарий

Хотите сохранить эту статью на потом? Нажмите на сердечко в правом нижнем углу, чтобы сохранить в свой собственный блок статей!