我刚刚使用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>
有人可以解释一下这个区别吗?
答案 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的东西。