Tidak dapat Mencari Ruang NAMA Musim Semi untuk Pemegang Ruang Nama Skema XML

Bahagian Keselamatan

Saya baru sahaja mengumumkan kursus Learn Spring Security yang baru, termasuk bahan penuh yang tertumpu pada timbunan OAuth2 baru di Spring Security 5:

>> SEMAK KURSUS

1. Masalahnya

Artikel ini akan membincangkan salah satu masalah konfigurasi yang paling biasa di Spring - pengendali ruang nama untuk salah satu ruang nama Spring tidak dijumpai . Sebilangan besar masa, ini bermaksud satu balang Spring tertentu hilang dari laluan kelas - jadi mari kita lihat skema yang hilang ini, dan bagaimana kebergantungan yang hilang untuk setiap satu.

2. //www.springframework.org/schema/security

Ruang nama keselamatan yang tidak tersedia adalah masalah yang paling sering dihadapi dalam praktik:

Yang membawa kepada pengecualian berikut:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [//www.springframework.org/schema/security] Offending resource: class path resource [securityConfig.xml]

Penyelesaiannya mudah - pergantungan konfigurasi keselamatan-musim bunga hilang dari jalan kelas projek:

 org.springframework.security spring-security-config 3.2.5.RELEASE 

Ini akan meletakkan pengendali ruang nama yang betul - dalam kes ini SecurityNamespaceHandler - di classpath dan bersedia untuk menguraikan unsur-unsur di ruang nama keselamatan .

Konfigurasi Maven yang lengkap untuk persediaan Spring Security sepenuhnya boleh didapati di tutorial Maven saya sebelumnya.

3. //www.springframework.org/schema/aop

Masalah yang sama berlaku apabila menggunakan yang aop ruang nama tanpa perpustakaan spring aop yang diperlukan pada classpath yang:

Pengecualian yang tepat:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [//www.springframework.org/schema/aop] Offending resource: ServletContext resource [/WEB-INF/webConfig.xml]

Penyelesaiannya serupa - balang spring-aop perlu ditambahkan ke jalan kelas projek:

 org.springframework spring-aop 4.1.0.RELEASE 

Dalam kes ini, AopNamespaceHandler akan hadir di classpath setelah menambahkan kebergantungan baru.

4. //www.springframework.org/schema/tx

Menggunakan ruang nama transaksi - ruang nama kecil tetapi sangat berguna untuk konfigurasi semantik transaksional:

juga akan menghasilkan pengecualian jika balang kanan tidak terdapat di lorong kelas:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [//www.springframework.org/schema/tx] Offending resource: class path resource [daoConfig.xml]

Ketergantungan yang hilang di sini adalah spring-tx :

 org.springframework spring-tx 4.1.0.RELEASE 

Sekarang, NamspaceHandler yang betul - iaitu TxNamespaceHandler - akan hadir di classpath yang membolehkan pengurusan transaksi deklaratif dengan XML dan anotasi.

5. //www.springframework.org/schema/mvc

Bergerak ke hadapan untuk yang mvc ruang nama :

Ketergantungan yang hilang akan menyebabkan pengecualian berikut:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [//www.springframework.org/schema/mvc] Offending resource: class path resource [webConfig.xml]

Dalam kes ini, kebergantungan yang hilang adalah spring-mvc :

 org.springframework spring-webmvc 4.1.0.RELEASE 

Menambah ini ke pom.xml akan menambahkan MvcNamespaceHandler ke classpath - membolehkan projek mengkonfigurasi semantik MVC menggunakan ruang nama.

6. Kesimpulannya

Akhirnya, jika anda menggunakan Eclipse untuk mengurus pelayan web dan menyebarkan - pastikan bahagian Perhimpunan Penyebaran projek dikonfigurasikan dengan betul - iaitu bahawa kebergantungan Maven sebenarnya disertakan di jalan kelas pada waktu penggunaan.

Tutorial ini membincangkan suspek biasa untuk masalah "Tidak dapat mencari Spring NamespaceHandler for XML schema namespace" dan memberikan penyelesaian untuk setiap kejadian.

Bahagian bawah keselamatan

Saya baru sahaja mengumumkan kursus Learn Spring Security yang baru, termasuk bahan penuh yang tertumpu pada timbunan OAuth2 baru di Spring Security 5:

>> SEMAK KURSUS