Apakah itu NoSuchBeanDefinitionException dan bagaimana cara saya membetulkannya?
Pada Musim Bunga, NoSuchBeanDefinitionException dilemparkan apabila BeanFactory tidak dapat mengesan definisi kacang untuk nama kacang yang ditentukan. Ini boleh berlaku kerana beberapa sebab:
-
Pendaftaran Kacang Hilang: Kacang belum didaftarkan dengan Kilang Kacang. Daftarkan kacang menggunakan anotasi @Bean, konfigurasi XML atau API kilang kacang.
-
Nama Kacang Pendua: Berbilang kacang dengan nama yang sama didaftarkan dalam konteks aplikasi. Gunakan @Qualifier atau atribut nama untuk membezakan antara mereka atau menamakan semula kacang.
-
Nama Kacang Salah: Nama kacang yang digunakan untuk merujuk kacang adalah tidak betul. Sahkan ejaan dan selongsong nama kacang.
-
Sensitiviti Sarung Nama Kacang: Nama kacang adalah sensitif huruf besar pada Musim Bunga. Pastikan nama kacang sepadan dengan bekas yang digunakan semasa pendaftaran.
-
Ketidakpadanan Profil: Jika pendaftaran kacang adalah khusus profil, pastikan profil Spring aktif sepadan dengan profil tempat kacang didaftarkan. Konfigurasikan profil menggunakan anotasi @Profile atau sifat persekitaran.
-
Gangguan Proksi AOP: Spring menggunakan proksi untuk operasi tertentu (cth., pelaksanaan async, pengurusan transaksi). Pastikan kacang tidak diproksikan secara berbeza daripada yang dijangkakan.
-
Hierarki Konteks MVC Musim Bunga: Dalam aplikasi Spring MVC, kacang yang didaftarkan dalam konteks akar tidak boleh diakses oleh kacang dalam konteks DispatcherServlet. Alihkan kacang ke konteks yang sesuai.
Suntikan Koleksi:
Spring mengendalikan suntikan kacang untuk koleksi (cth., Senarai, Peta) secara berbeza. Jika @Resource digunakan untuk menyuntik koleksi, ia akan mencari kacang mengikut nama. Walau bagaimanapun, untuk @Autowired, Spring akan cuba mencari dan menyuntik kacang jenis koleksi yang ditentukan. Untuk menentukan kacang tertentu untuk suntikan, gunakan @Qualifier atau sifat nama. Untuk kaedah @Bean menggunakan koleksi, gunakan Spring Expression Language (SpEL) untuk merujuk kepada kacang mengikut nama.
Atas ialah kandungan terperinci Apa yang Menyebabkan NoSuchBeanDefinitionException pada Musim Bunga dan Bagaimana Saya Boleh Menyelesaikannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!