Невозможно найти Spring NamespaceHandler для пространства имен схемы XML

Невозможно найти Spring NamespaceHandler для пространства имен схемы XML

1. Эта проблема

В этой статье будет обсуждаться одна из наиболее распространенных проблем конфигурации в Spring -a namespace handler for one of the Spring namespaces is not found. В большинстве случаев это означает, что в пути к классам отсутствует одна конкретная jar-библиотека Spring, поэтому давайте рассмотрим, какими могут быть эти недостающие схемы и какова недостающая зависимость для каждой из них.

Дальнейшее чтение:

Внедрение на основе XML весной

Узнайте, как выполнить внедрение на основе XML с помощью Spring.

Read more

web.xml vs Initializer with Spring

Краткое и практическое руководство по настройке XML и Java в Spring.

Read more

Top Spring Framework Интервью Вопросы

Быстрое обсуждение общих вопросов о Spring Framework, которые могут возникнуть во время собеседования.

Read more

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» и предлагались решения для каждого случая.

Related