проверка файла конфигурации Spring - PullRequest
0 голосов
/ 31 июля 2011

Я заметил такое поведение при обработке файлов конфигурации Spring.У меня есть 2 ошибки в моем файле конфигурации:

  • одна ошибка синтаксиса (форматирование хорошо), скажем неправильно закрывающий тег (пробовал с тегом "html")
  • ошибка «проверки пространства имен» (проверка неверного пути к пространству имен безопасности)

Поскольку xml недействителен, я подумал, что первой ошибкой, возвращенной средой выполнения, была ошибка проверки.Это не так (весна 3.0.2 с безопасностью 3.0.2).Сначала возвращается:

Соответствующий шаблон является строгим, но не найдено никакого объявления для элемента 'http'

, затем, когда я исправил эту первую ошибку, я получил(то, что я ожидал первым):

Тип элемента "http" должен заканчиваться соответствующим конечным тегом ""

Так что можно сказать опроверка синтаксиса?Кажется, что процесс проверки синтаксиса не выполняется в качестве предварительного этапа, но проверка и проверка правильности чередуются.Каждый тег сначала проверяется, а затем проверяется.Это правильно?Это зависит от реализации?

PS: мой неисправный xml (обратите внимание на две ошибки в расположении схемы и закрывающем теге http):

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
   xmlns:beans="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                       http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsdFIRSTERROR">

<http>
    <form-login />
    <http-basic />
    <logout />
    <intercept-url pattern="/**" access="ROLE_USER" />
</SECONDERRORhttp>

<authentication-manager>
    <authentication-provider>
        <user-service>
            <user name="myuser" password="mysecret" authorities="ROLE_USER" />
        </user-service>
    </authentication-provider>
 </authentication-manager>

</beans:beans>

1 Ответ

0 голосов
/ 01 августа 2011

Вы правы, что «проверка синтаксиса» и проверка не являются двумя отдельными шагами. Spring использует потоковый анализатор XML для эффективности. Парсер такого типа обычно идентифицирует ошибку именно тогда, когда она достигает нарушающего элемента, а не до или после.

...