Rumah > Java > javaTutorial > teks badan

Mengapakah Memanggil `ApplicationContext.getBean()` dalam Spring Dianggap Amalan Buruk?

Susan Sarandon
Lepaskan: 2024-11-27 08:02:09
asal
139 orang telah melayarinya

Why is Calling `ApplicationContext.getBean()` in Spring Considered Bad Practice?

Mengapa ApplicationContext.getBean() dalam Spring Tidak Digalakkan

Memanggil ApplicationContext.getBean() dalam Spring dianggap sebagai amalan yang tidak baik kerana ia melanggar prinsip Inversi Kawalan ( IoC).

Penyongsangan Kawalan dan Kebergantungan Suntikan

IoC dan suntikan kebergantungan adalah asas kepada reka bentuk Spring. IoC merangkum konsep bahawa objek tidak seharusnya bertanggungjawab untuk mencipta atau mencari kebergantungan mereka. Sebaliknya, kebergantungan ini harus disediakan oleh sumber luaran.

Suntikan Ketergantungan (DI) ialah mekanisme yang Spring menyuntik kebergantungan ini secara automatik ke dalam objek yang bekerjasama. Ini membenarkan gandingan longgar, apabila objek tidak bergantung pada pelaksanaan khusus kebergantungannya.

Masalah dengan getBean()

Memanggil getBean() secara langsung bercanggah dengan prinsip ini:

  • Gandingan Ketat: Objek yang memanggil getBean() adalah ketat digandingkan dengan bekas Spring. Mereka tahu dan mengambil berat tentang cara kebergantungan disediakan, yang menjadikan mereka sukar untuk menguji dan memfaktorkan semula.
  • Pintas Pengurusan Ketergantungan: Dengan menggunakan getBean(), objek memintas mekanisme DI dan terus akses bekas Spring. Ini boleh menyebabkan kebergantungan yang salah disuntik atau kemungkinan ralat masa jalan.
  • Kebolehujian Dikurangkan: Objek yang bergantung pada getBean() tidak boleh diuji dengan mudah secara berasingan. Pelaksanaan olok-olok atau stub tidak boleh disuntik, menjadikan ujian kelakuan objek ini sukar.

Alternatif untuk getBean()

Daripada memanggil getBean() secara langsung, pembangun harus menggunakan yang berikut pendekatan:

  • Suntikan Pembina: Lulus kebergantungan sebagai hujah kepada pembina. Spring akan menyuntik kacang yang sepadan secara automatik.
  • Suntikan Penetap: Tentukan kaedah penetap dalam objek yang bekerjasama dan gunakan teg dalam konfigurasi XML atau anotasi @Autowired dalam Java untuk menentukan kebergantungan.
  • Suntikan Medan: Anotasi ahli medan dengan @Autowired, tetapi ini harus digunakan dengan berhati-hati kerana ia boleh menyebabkan isu keterlihatan.

Dengan mematuhi amalan ini, pembangun boleh mencapai longgar menggandingkan, memudahkan ujian dan memastikan keteguhan aplikasi Spring mereka.

Atas ialah kandungan terperinci Mengapakah Memanggil `ApplicationContext.getBean()` dalam Spring Dianggap Amalan Buruk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan