Spring模板应用程序中的beans:标记是什么?

时间:2014-01-12 02:46:06

标签: java xml spring spring-mvc

我刚刚使用Spring Source IDE创建了一个Spring模板应用程序,它在servlet-context.xml中定义了这样的ViewResolver:

<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>

我不熟悉这种配置,我通常会看到以这种方式定义的ViewResolver:

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>

有人可以解释一下这个区别吗?

1 个答案:

答案 0 :(得分:2)

它们实际上是等价的。在第一种情况下,beans是Spring bean XML schema的名称空间前缀。模式定义中名称空间前缀到名称空间的映射是在其他地方完成的 - 很可能是在根元素中。

在第二种情况下,不需要前缀,因为默认命名空间被映射到同一模式 - 再次,很可能在根元素中。来自文档:

<beans xmlns="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.xsd">

xmlns:表示默认名称空间为 http://www.springframework.org/schema/beans 。在xsi:schemaLocation属性中,您会看到命名空间被映射到定义该命名空间的Spring bean模式:

<xsd:schema xmlns="http://www.springframework.org/schema/beans" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.springframework.org/schema/beans">

所以它实际上只是一个XML而不是Spring的东西。