Невозможно найти Spring NamespaceHandler для пространства имен схемы XML
1. Эта проблема
В этой статье будет обсуждаться одна из наиболее распространенных проблем конфигурации в Spring -a namespace handler for one of the Spring namespaces is not found. В большинстве случаев это означает, что в пути к классам отсутствует одна конкретная jar-библиотека Spring, поэтому давайте рассмотрим, какими могут быть эти недостающие схемы и какова недостающая зависимость для каждой из них.
Дальнейшее чтение:
Внедрение на основе XML весной
Узнайте, как выполнить внедрение на основе XML с помощью Spring.
web.xml vs Initializer with Spring
Краткое и практическое руководство по настройке XML и Java в Spring.
Top Spring Framework Интервью Вопросы
Быстрое обсуждение общих вопросов о Spring Framework, которые могут возникнуть во время собеседования.
2. http://www.springframework.org/schema/securityс
Отсутствиеsecurity namespace является наиболее часто встречающейся проблемой на практике:
Что приводит к следующему исключению:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem:
Unable to locate Spring NamespaceHandler for XML schema namespace
[http://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 - в путь к классам и готов к синтаксическому анализу элементов в пространстве именsecurity.
Полную конфигурацию Maven для полной настройки Spring Security можно найти в моих предыдущихMaven tutorial.
3. http://www.springframework.org/schema/aopс
Та же проблема возникает при использованииthe aop namespace без необходимой библиотеки aop spring в пути к классам:
Точное исключение:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem:
Unable to locate Spring NamespaceHandler for XML schema namespace
[http://www.springframework.org/schema/aop]
Offending resource: ServletContext resource [/WEB-INF/webConfig.xml]
Решение аналогично - нужно добавить jarspring-aop в путь к классам проекта:
org.springframework
spring-aop
4.1.0.RELEASE
В этом случаеAopNamespaceHandler будет присутствовать в пути к классам после добавления новой зависимости.
4. http://www.springframework.org/schema/txс
Использованиеthe transaction namespace - небольшого, но очень полезного пространства имен для настройки семантики транзакций:
также приведет к исключению, если правая банка не находится на пути к классам:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem:
Unable to locate Spring NamespaceHandler for XML schema namespace
[http://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. http://www.springframework.org/schema/mvcс
Переходя кthe mvc namespace:
Отсутствующая зависимость приведет к следующему исключению:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem:
Unable to locate Spring NamespaceHandler for XML schema namespace
[http://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 для управления веб-сервером и развертывания, убедитесь, чтоthe Deployment Assembly section of the project is correctly configured, а именно, что зависимости Maven действительно включены в путь к классам во время развертывания.
В этом руководстве обсуждались обычные подозрения на проблему «Невозможно найти Spring NamespaceHandler для пространства имен схемы XML» и предлагались решения для каждого случая.