Logo id.removalsclassifieds.com

Perbedaan Antara Injeksi Konstruktor dan Injeksi Setter (Dengan Tabel)

Daftar Isi:

Anonim

Ketika resolusi ketergantungan dibuat oleh agen eksternal daripada kelas itu sendiri, maka itu dikenal sebagai injeksi ketergantungan. Ada dua cara standar injeksi dependensi yang didukung dalam kerangka Spring, melalui argumen konstruktor atau melalui penggunaan metode penyetel. Jenis injeksi ketergantungan sebelumnya dikenal sebagai injeksi konstruktor, dan yang terakhir dikenal sebagai injeksi penyetel. Kedua metode tersebut digunakan untuk tujuan yang berbeda dan memiliki kelebihan dan kekurangannya masing-masing.

Injeksi Konstruktor vs Injeksi Setter

Perbedaan antara injeksi konstruktor dan injeksi setter adalah injeksi konstruktor menggunakan konstruktor, dan di sisi lain, injeksi penyetel menggunakan metode penyetel untuk menyuntikkan ketergantungan. Kedua jenis cara injeksi ini berbeda satu sama lain berdasarkan beberapa parameter seperti keamanan, keterbacaan, kekekalan pendukung, dan sebagainya.

Injeksi konstruktor adalah jenis injeksi ketergantungan dalam kerangka pegas yang menggunakan konstruktor untuk menyuntikkan ketergantungan. Dependensi yang diperlukan untuk salah satu kelas ditentukan sebagai parameter konstruktor kelas tertentu. Injeksi konstruktor tidak mengizinkan pengembang untuk membuat objek apa pun kecuali semua dependensi sudah siap, dan dengan demikian, ini memastikan injeksi dependensi yang berhasil.

Injeksi setter adalah jenis injeksi ketergantungan dalam kerangka pegas yang menggunakan metode penyetel untuk menyuntikkan ketergantungan. Ini memiliki metode setter dari bentuk setXXX() di mana XXX menunjukkan ketergantungan yang menyuntikkan objek dependen ke klien. Cara menyelesaikan ketergantungan ini sangat umum dalam kerangka Spring.

Tabel Perbandingan Antara Injeksi Konstruktor dan Injeksi Setter

Parameter Perbandingan

Injeksi Konstruktor

Injeksi Setter

Ketergantungan disuntikkan Ini menggunakan konstruktor. Ini menggunakan metode setter.
Keterbacaan Hal ini tidak banyak dibaca dibandingkan dengan setter. Ini lebih mudah dibaca.
Ganti properti Tidak dapat mengesampingkan ketergantungan. Dapat menimpa dependensi tertentu.
Perubahan Itu selalu membuat instance kacang baru. Itu tidak membuat instance kacang baru.
Kekekalan Ini mendukung kekekalan. Itu tidak mendukung.

Apa itu Injeksi Konstruktor?

Injeksi konstruktor adalah salah satu cara standar untuk menyelesaikan ketergantungan dalam kerangka kerja Spring, yang secara statis mendefinisikan daftar dependensi yang diperlukan untuk kelas dengan menetapkannya sebagai parameter ke konstruktor kelas. Semua kelas yang memerlukan ketergantungan harus memiliki konstruktor publik di dalamnya, yang mengambil instance sebagai argumen konstruktor, dan konstruktor itu harus menjadi satu-satunya konstruktor publik di dalam kelas itu.

Jika ada kebutuhan untuk lebih dari satu ketergantungan, maka argumen tambahan harus ditambahkan ke konstruktor yang sama. Untuk memastikan bahwa ketergantungan disuntikkan sepenuhnya, prinsip tanggung jawab tunggal harus diikuti, yang menyatakan bahwa anggota hanya boleh melakukan satu hal. Konstruktor harus tetap bebas dari logika lain untuk membuat konstruktor kelas lebih cepat dan lebih dapat diandalkan.

Satu fakta penting dari injeksi konstruktor adalah bahwa objek tidak akan dibuat kecuali semua dependensi sudah siap. Karena ini membuat instance baru setiap kali konstruktor dipanggil, override tidak dimungkinkan di dalamnya. Injeksi konstruktor pada dasarnya digunakan dalam kasus ketika ada kebutuhan untuk membuat objek dengan semua dependensi. Ini adalah cara yang paling umum dan termudah untuk menerapkan dependensi dengan benar.

Apa itu Injeksi Setter?

Injeksi penyetel adalah salah satu cara standar untuk menyelesaikan ketergantungan dalam kerangka kerja Spring, yang menggunakan metode penyetel untuk menyelesaikan dependensi. Metode penyetel berbentuk setXXX(), di mana XXX menentukan ketergantungan yang perlu disuntikkan. Dalam metode injeksi jenis ini, objek pertama dibuat, dan kemudian ketergantungan disuntikkan. Untuk mengonfigurasi Spring, file XML digunakan, dan dengan demikian, keterbacaan menjadi perhatian besar.

Karena metode penyetel memiliki bentuk nama metode tertentu, metode ini meningkatkan keterbacaan dalam banyak cara. Ketika ada kebutuhan untuk menyuntikkan sejumlah besar dependensi, maka jenis injeksi penyetel sangat disukai dan lebih disukai daripada jenis metode injeksi lainnya. Selain itu, dengan menggunakan injeksi penyetel, pengembang dapat dengan mudah mengganti dan mengubah nilai karena tidak membuat instance kacang baru setiap saat. Satu-satunya kelemahan injeksi setter adalah tidak memastikan injeksi ketergantungan yang lengkap.

Tidak ada jaminan apakah objek tertentu memiliki ketergantungan yang disuntikkan atau tidak. Dengan kata lain, itu berarti bahwa mungkin ada objek dengan ketergantungan yang tidak lengkap. Injeksi setter adalah cara paling fleksibel dan paling umum untuk menerapkan injeksi ketergantungan.

Perbedaan Utama Antara Injeksi Konstruktor dan Injeksi Setter

Kesimpulan

Intinya adalah bahwa kedua cara menyuntikkan dependensi, apakah itu injeksi konstruktor atau injeksi penyetel, memiliki pro dan kontra sendiri. Selain itu, Spring tidak melarang pengembang menggunakan siapa pun kecuali penilai. Mereka bebas menggunakan injeksi konstruktor dan injeksi penyetel dalam satu file konfigurasi Spring. Hal penting yang perlu diingat saat menyuntikkan dependensi adalah menggunakan injeksi konstruktor ketika ada kebutuhan wajib untuk membuat objek dengan semua dependensi dan menggunakan injeksi penyetel ketika jumlah dependensi lebih atau jika ada kebutuhan untuk lebih baik keterbacaan.

Referensi

  1. https://digitalcommons.calpoly.edu/csse_fac/34/
  2. https://books.google.com/books?hl=id&lr=&id=InfRDwAAQBAJ&oi=fnd&pg=PA63&dq=constructor+injection&ots=Hon_bCw-Kv&sig=VdsD_S0lCfP3D8idI8q4F6RnhoE

Perbedaan Antara Injeksi Konstruktor dan Injeksi Setter (Dengan Tabel)