为什么在http://www.springframework.org/schema/security?

时间:2016-06-03 11:35:28

标签: java xml eclipse spring spring-security

在我们基于Spring的应用程序中,我们使用位于http://www.springframework.org/schema/security/spring-security.xsd的命名空间http://www.springframework.org/schema/security中的元素补充应用程序上下文文件:

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

但是,最近我们收到此错误消息

Multiple annotations found at this line:
            - cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'security:global-method-security'.
            - schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/security/spring-security.xsd', because 1) could not 
             find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.

在我们项目的初始设置之后或清除Eclipse的网络缓存之后,在Eclipse的XML编辑器中打开应用程序上下文文件时。

对archive.org的进一步研究表明,当前版本(spring-security-4.1.xsd)已于2016-03-08或之前发布时,已删除无版本的XSD。

是否有人知道这是偶然发生的还是有更深层次的原因要求删除?对于其他命名空间,springframework.org/schema/上仍然提供无版本的XSD,即spring-security-oauth.xsd和spring-beans.xsd。 (由于我声誉水平低,我无法发布明确的链接。)

作为一种解决方法,我们现在引用一个版本化的XSD。但是,到目前为止,我的印象是Spring鼓励使用无版本的XSD,例如current Spring security reference documentationthis SO post中建议的那样。

1 个答案:

答案 0 :(得分:0)

事实证明,Spring维护者在此期间向http://springframework.org/schema/security添加了无版本的spring-security.xsd。这次,它与spring-security-4.1.xsd匹配。修理它的人:谢谢!