Spring xml配置:beans:beans vs beans

时间:2016-09-21 10:33:05

标签: spring spring-security

之间有什么区别
<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-4.2.xsd
    http://www.springframework.org/schema/security
    http://www.springframework.org/schema/security/spring-security-4.1.xsd">

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:security="http://www.springframework.org/schema/security"
       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.xsd
                    http://www.springframework.org/schema/security
                    http://www.springframework.org/schema/security/spring-security.xsd">

在前者中,安全性配置为

<http auto-config="true">

        <intercept-url pattern="/login"  access="permitAll()" />
</http>

而后者则将其配置为

<security:http auto-config="true">

        <security:intercept-url pattern="/login"  access="permitAll()" />
</security:http>

我不确定两种架构格式之间的功能差异。也有人可以建议哪个是优先考虑的,或者哪个优先考虑各自的优势?

2 个答案:

答案 0 :(得分:3)

至少存在两个差异

  • 第一个只是语法:bean是默认命名空间(Petar Ivanov在他的answer中解释了这个)

  • 第二个可能导致以后出现一些问题(当你更新spring或spring-security时):

XSD版本号与XSD版本号无关

在您第一次使用http://www.springframework.org/schema/beans/spring-beans-4.2.xsdhttp://www.springframework.org/schema/security/spring-security-4.1.xsd时,您使用的是xsd的的修复版本(春天和春天的安全性有不同的数字)

在您的第二个剪辑中,您使用了http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/security/spring-security.xsd。在这种情况下,spring将使用您使用的弹簧和弹簧安全罐支持的最新模式。

答案 1 :(得分:2)

标记beans:beans引用beans命名空间中的beans标记,标记beans引用默认命名空间中的beans标记。

如果默认命名空间为beans - 则完全没有区别。