Rumah Java javaTutorial Bagaimanakah Anotasi @Autowired Spring Berfungsi untuk Suntikan Ketergantungan?

Bagaimanakah Anotasi @Autowired Spring Berfungsi untuk Suntikan Ketergantungan?

Dec 10, 2024 pm 12:27 PM

How Does Spring's @Autowired Annotation Work for Dependency Injection?

Memahami Penggunaan Spring @Autowired

Dalam soalan anda, anda menghadapi kesukaran memahami penggunaan anotasi @Autowired Spring. Berikut ialah penjelasan komprehensif untuk menangani pertanyaan anda:

Anotasi Berwayar Auto dan Aplikasinya

Anotasi @Autowired mengautomasikan proses mencipta kebergantungan kacang, menghapuskan keperluan untuk konfigurasi manual dalam fail XML. Ia mengenal pasti sifat, parameter pembina dan kaedah penetap yang memerlukan suntikan dan menyuntik kacang yang sesuai secara automatik.

Dalam Contoh 1, anotasi @Autowired digunakan pada kaedah setMovieFinder, menunjukkan bahawa Spring harus menyuntik contoh antara muka MovieFinder ke dalam sifat movieFinder.

Dalam Contoh 2, anotasi @Autowired digunakan pada kaedah penyediaan, membayangkan bahawa Spring harus menyuntik dua biji, MovieCatalog dan CustomerPreferenceDao, ke dalam sifat yang sepadan.

Menyelesaikan Kekaburan Kacang

Apabila beberapa biji melaksanakan antara muka yang sama, Spring menggunakan anotasi kelayakan untuk menentukan kacang yang hendak disuntik. Dalam contoh anda, menambahkan anotasi kelayakan seperti berikut akan menyelesaikan kekaburan kacang:

@Autowired
@Qualifier("redBean")
private Color color;
Salin selepas log masuk

Ini menentukan bahawa kacang merah harus disuntik ke dalam sifat warna. Anda boleh mentakrifkan kacang dalam fail XML dengan sewajarnya:

<bean>
Salin selepas log masuk

Mengkonfigurasi Pengimbasan Kacang

Untuk mengenal pasti secara automatik kelas yang harus diuruskan sebagai kacang, anda boleh menggunakan <context:component-scan> teg dalam fail XML konteks aplikasi:

&lt;context:component-scan base-package=&quot;com.mycompany.movies&quot;/&gt;
Salin selepas log masuk

Ini mengimbas pakej dan subpakej yang ditentukan untuk kelas yang dianotasi dengan @Component, @Controller atau @Repository dan mencipta takrifan kacang untuknya.

Mekanisme Suntikan Kebergantungan Alternatif

@Inject ialah anotasi standard Java yang serupa dengan @Autowired tetapi tidak khusus untuk Spring. Pilihan lain ialah @Resource, yang menggabungkan fungsi @Autowired dan @Qualifier.

Amalan Terbaik

Untuk kebolehselenggaraan yang lebih baik, disyorkan untuk menggunakan @Inject atau @Resource bukannya @Autowired. Selain itu, adalah lebih baik untuk menggunakan suntikan pergantungan pada pembina berbanding kaedah, membolehkan pengesahan awal dan menghalang NullPointerExceptions.

Atas ialah kandungan terperinci Bagaimanakah Anotasi @Autowired Spring Berfungsi untuk Suntikan Ketergantungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte Mar 07, 2025 pm 06:09 PM

Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka? Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka? Mar 17, 2025 pm 05:35 PM

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?

Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan? Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan? Mar 17, 2025 pm 05:46 PM

Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?

Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru Mar 07, 2025 pm 06:12 PM

Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru

Iceberg: Masa Depan Jadual Data Tasik Iceberg: Masa Depan Jadual Data Tasik Mar 07, 2025 pm 06:31 PM

Iceberg: Masa Depan Jadual Data Tasik

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Isu Tetap Spring Boot Snakeyaml 2.0 CVE-2022-1471 Isu Tetap Mar 07, 2025 pm 05:52 PM

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Isu Tetap

Bagaimanakah saya dapat melaksanakan teknik pengaturcaraan berfungsi di Java? Bagaimanakah saya dapat melaksanakan teknik pengaturcaraan berfungsi di Java? Mar 11, 2025 pm 05:51 PM

Bagaimanakah saya dapat melaksanakan teknik pengaturcaraan berfungsi di Java?

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas? Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas? Mar 17, 2025 pm 05:43 PM

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?

See all articles