2016-09-21 2 views
0

В чем разница междуSpring конфигурации XML: Фасоль: бобы против бобов

<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

См. [Пространства имен XML] (http://www.w3schools.com/xml/xml_namespaces.asp). В вашем первом фрагменте наиболее вероятно, что пространство имен * security * используется как базовое пространство имен. В более поздних * beans * namespace используется как базовое пространство имен –

+0

спасибо, это полезный указатель. – Jake

ответ

2

Тег beans:beans относится к beans тегу из beans пространства имен и тег beans см beans тега из пространства имен по умолчанию.

Если пространство имен по умолчанию: beans - нет никакой разницы.

3

Есть по крайней мере два отличия

  • первый просто синтаксический: бобы пространство имен по умолчанию или нет (Петар Иванов объяснил это в своем answer)

  • второй может привести к некоторым проблемы в дальнейшем (при обновлении пружины или пружинной безопасности):

XSD с номером версии V . S XSD без номера версии

В вашем первом отрезала вы использовали http://www.springframework.org/schema/beans/spring-beans-4.2.xsd и http://www.springframework.org/schema/security/spring-security-4.1.xsd - здесь вы использовали версию исправления из XSD-х (это нормально, что весной и весна-безопасность имеют разные номера)

В вашей второй отрезали вы использовали http://www.springframework.org/schema/beans/spring-beans.xsd и http://www.springframework.org/schema/security/spring-security.xsd. В этом случае весна будет использовать новейшие схемы, поддерживаемые используемыми вами пружинными и пружинными банками.