Току-що обявих новия курс Learn Spring Security, включително пълния материал, фокусиран върху новия стек OAuth2 в Spring Security 5:
>> ПРЕГЛЕД НА КУРСА1. Проблемът
Тази статия ще обсъди един от най-често срещаните проблеми с конфигурацията през Spring - манипулатор на пространство от имена за едно от пространствата на имена Spring не е намерен . През повечето време това означава, че един конкретен пролетен буркан липсва в пътя на класа - така че нека да разгледаме какви могат да бъдат тези липсващи схеми и каква е липсващата зависимост за всяка една.
2. //www.springframework.org/schema/security
Недостъпността на пространството от имена на сигурността е най-често срещаният проблем на практика:
Което води до следното изключение:
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]
Решението е просто - зависимостта spring-security-config липсва в пътя на класа на проекта:
org.springframework.security spring-security-config 3.2.5.RELEASE
Това ще постави правилния манипулатор на пространството от имена - в този случай SecurityNamespaceHandler - на пътя на класа и готов да анализира елементите в пространството от имена на защитата .
Пълната конфигурация на Maven за пълна настройка на Spring Security може да се намери в предишния ми урок на Maven.
3. //www.springframework.org/schema/aop
Същият проблем възниква при използване на пространството от имена aop, без да има необходимата пролетна библиотека aop на пътя на класа:
Точното изключение:
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]
Решението е подобно - бурканът spring-aop трябва да бъде добавен към пътя към класа на проекта:
org.springframework spring-aop 4.1.0.RELEASE
В този случай AopNamespaceHandler ще присъства в пътя на класа след добавяне на новата зависимост.
4. //www.springframework.org/schema/tx
Използване на пространството от имена на транзакциите - малко, но много полезно пространство от имена за конфигуриране на транзакционната семантика:
също ще доведе до изключение, ако десният буркан не е в пътя на класа:
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]
Липсващата зависимост тук е spring-tx :
org.springframework spring-tx 4.1.0.RELEASE
Сега десният NamspaceHandler - а именно TxNamespaceHandler - ще присъства в пътя на класа, позволявайки декларативното управление на транзакции както с XML, така и с анотации.
5. //www.springframework.org/schema/mvc
Преминаване напред към пространството от имена на mvc :
Липсващата зависимост ще доведе до следното изключение:
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]
В този случай липсващата зависимост е spring-mvc :
org.springframework spring-webmvc 4.1.0.RELEASE
Добавянето на това към pom.xml ще добави MvcNamespaceHandler към пътя на класа - позволявайки на проекта да конфигурира MVC семантика, използвайки пространството от имена.
6. Заключение
И накрая, ако използвате Eclipse за управление на уеб сървъра и разгръщане - уверете се, че секцията Сглобяване на внедряване на проекта е правилно конфигурирана - а именно, че зависимостите на Maven всъщност са включени в пътя на класа по време на разполагане.
Този урок обсъжда обичайните заподозрени за проблема „Не може да се намери Spring NamespaceHandler за пространство на имена на XML схема“ и предоставя решения за всяко възникване.
Сигурност отдолу