簡體   English   中英

彈簧配置文件驗證

[英]spring configuration file validation

我已經在處理Spring配置文件時注意到了這一行為。
我的配置文件中有2個錯誤:

  • 一種語法(格式正確)錯誤,例如關閉標記拼寫錯誤(嘗試使用“ html”標記)
  • “命名空間”(驗證)錯誤(嘗試了錯誤的安全命名空間路徑)

由於xml無效,我認為運行時環境返回的第一個錯誤是驗證錯誤。

事實並非如此(帶有安全性3.0.2的Spring 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>

沒錯,“語法檢查”和驗證不是兩個單獨的步驟。 Spring使用流XML解析器來提高效率。 這類解析器通常會在到達錯誤元素時准確地識別錯誤,而不是在錯誤發生之前或之后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM