Tidak dapat Menemukan Spring NamespaceHandler untuk XML Schema Namespace

Keamanan Top

Saya baru saja mengumumkan kursus Learn Spring Security baru, termasuk materi lengkap yang berfokus pada tumpukan OAuth2 baru di Spring Security 5:

>> LIHAT KURSUSnya

1. Masalahnya

Artikel ini akan membahas salah satu masalah konfigurasi yang paling umum di Spring - penangan namespace untuk salah satu namespace Spring tidak ditemukan . Sering kali, ini berarti satu stoples Spring tertentu hilang dari classpath - jadi mari kita bahas skema yang hilang ini, dan apa dependensi yang hilang untuk masing-masing.

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

Namespace keamanan yang tidak tersedia sejauh ini merupakan masalah yang paling banyak ditemui dalam praktiknya:

Yang mengarah ke 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]

Solusinya sangat mudah - dependensi spring-security-config tidak ada di classpath proyek:

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

Ini akan menempatkan penangan namespace yang benar - dalam hal ini SecurityNamespaceHandler - di classpath dan siap untuk mengurai elemen di namespace keamanan .

Konfigurasi Maven lengkap untuk penyiapan Keamanan Musim Semi lengkap dapat ditemukan di tutorial Maven saya sebelumnya.

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

Masalah yang sama terjadi ketika menggunakan yang aop namespace tanpa memiliki diperlukan perpustakaan semi aop pada classpath:

Pengecualian persis:

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]

Solusinya serupa - stoples pegas perlu ditambahkan ke jalur kelas proyek:

 org.springframework spring-aop 4.1.0.RELEASE 

Dalam kasus ini, AopNamespaceHandler akan ada di classpath setelah menambahkan dependensi baru.

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

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

juga akan menghasilkan pengecualian jika jar kanan tidak ada di jalur 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 tepat - yaitu TxNamespaceHandler - akan ada di jalur kelas yang memungkinkan manajemen transaksi deklaratif dengan XML dan anotasi.

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

Bergerak maju untuk para MVC namespace :

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 kasus ini, dependensi yang hilang adalah spring-mvc :

 org.springframework spring-webmvc 4.1.0.RELEASE 

Menambahkan ini ke pom.xml akan menambahkan MvcNamespaceHandler ke classpath - memungkinkan proyek untuk mengonfigurasi semantik MVC menggunakan namespace.

6. Kesimpulan

Terakhir, jika Anda menggunakan Eclipse untuk mengelola server web dan menerapkan - pastikan bagian Deployment Assembly dari proyek tersebut dikonfigurasi dengan benar - yaitu bahwa dependensi Maven benar-benar disertakan pada classpath pada waktu penerapan.

Tutorial ini membahas tersangka umum untuk masalah "Tidak dapat menemukan Spring NamespaceHandler untuk namespace skema XML" dan memberikan solusi untuk setiap kejadian.

Keamanan bawah

Saya baru saja mengumumkan kursus Learn Spring Security baru, termasuk materi lengkap yang berfokus pada tumpukan OAuth2 baru di Spring Security 5:

>> LIHAT KURSUSnya