Rumah >Java >javaTutorial >Mengapa Suntikan Medan Perlu Dielakkan dalam Suntikan Ketergantungan Musim Bunga?

Mengapa Suntikan Medan Perlu Dielakkan dalam Suntikan Ketergantungan Musim Bunga?

Linda Hamilton
Linda Hamiltonasal
2024-12-27 14:28:10951semak imbas

Why Should Field Injection Be Avoided in Spring Dependency Injection?

Suntikan Medan dan Kemudaratannya

Suntikan medan, yang mana kacang disuntik melalui anotasi @Autowired pada medan, sering tidak digalakkan. Untuk menggambarkan ini, pertimbangkan perkara berikut:

@Component
public class MyComponent {
    @Autowired
    private Cart cart;
}

Sebagai alternatif, suntikan pembina menggunakan pendekatan berikut:

@Component
public class MyComponent {
    private final Cart cart;

    @Autowired
    public MyComponent(Cart cart){
       this.cart = cart;
    }
}

Teknik Suntikan

Terdapat adalah tiga suntikan pergantungan utama kaedah:

  • Suntikan Pembina: Disuntik melalui pembina.
  • Suntikan kaedah: Disuntik melalui penetap atau kaedah lain.
  • Suntikan medan: Disuntik terus ke dalam medan menggunakan refleksi.

Suntikan medan, seperti yang dilihat dalam contoh pertama, sepadan dengan pilihan ketiga.

Garis Panduan Suntikan

Spring menyokong mengikuti garis panduan suntikan:

  • Wajib kebergantungan: Gunakan suntikan pembina.
  • Kebergantungan pilihan atau boleh ubah: Gunakan suntikan penetap.
  • Elakkan suntikan medan: Gunakannya hanya dalam luar biasa senario.

Kelemahan Suntikan Medan

Suntikan medan tidak digalakkan atas beberapa sebab:

  • Objek tidak berubah: Suntikan konstruktor memudahkan penciptaan objek tidak berubah, iaitu suntikan medan tidak menawarkan.
  • Gandingan ketat: Suntikan lapangan dengan ketat menggabungkan kelas dengan bekas DI, menghalang penggunaan bebas mereka.
  • Cabaran instan: Tanpa refleksi dan bekas DI, kelas tidak boleh dibuat instantiat, menghalang ujian unit keupayaan.
  • Kebergantungan tersembunyi: Suntikan medan menyembunyikan kebergantungan, menjadikannya sukar untuk membezakan pergantungan kelas pada komponen luaran.
  • Berbilang kebergantungan: Medan suntikan membolehkan pengumpulan tanpa halangan tanggungan.
  • Pelanggaran tanggungjawab: Kelas yang mengendalikan pelbagai tanggungjawab selalunya menunjukkan kebergantungan yang berlebihan, berpotensi melanggar Prinsip Tanggungjawab Tunggal.

Kesimpulan

Suntikan pembina dan penetap harus diutamakan berdasarkan keperluan. Suntikan lapangan secara amnya harus dielakkan kerana kekurangannya, dengan kemudahan sebagai satu-satunya kelebihannya.

Atas ialah kandungan terperinci Mengapa Suntikan Medan Perlu Dielakkan dalam Suntikan Ketergantungan Musim Bunga?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn