如何解决“之间的冲突”

时间:2011-10-03 12:01:25

标签: spring-mvc

我目前正在开发一个Spring MVC项目,并且在使用SpringMVC的"<MVC:resource "标签来加载静态资源方面存在一些问题。所以我下载了springMVC展示项目并对其进行了一些更改以检查此标记。

由于我的项目很简单,在我看来,“转换服务”的两个标签是没有必要的。

然而,在我删除了这两个标签之后,有些东西发生了。 如果我同时配置了静态资源"<resources mapping="/resources/..""<context:component-scan base-package="org.springframework.samples.mvc" />"标记(在controllers.xml中)的标记,那么我就无法访问控制器上的任何uri - 它返回404未找到的错误。如果我注释掉资源映射标记,那么这些控制器工作正常。

有没有人遇到过这种情况?知道怎么解决这个问题吗?

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

    <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->


<!-- Enables the Spring MVC @Controller programming model -->
    <annotation-driven conversion-service="conversionService">
        <argument-resolvers>
            <beans:bean class="org.springframework.samples.mvc.data.custom.CustomArgumentResolver"/>
        </argument-resolvers>
    </annotation-driven>

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources/ directory -->
    <resources mapping="/resources/**" location="/resources/" />

    <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
    <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>

<!-- Only needed because we install custom converters to support the examples in the org.springframewok.samples.mvc.convert package -->
    <beans:bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <beans:property name="formatters">
            <beans:bean class="org.springframework.samples.mvc.convert.MaskFormatAnnotationFormatterFactory" />
        </beans:property>
    </beans:bean>


    <!-- Imports user-defined @Controller beans that process client requests -->
    <beans:import resource="controllers.xml" />

</beans:beans>

3 个答案:

答案 0 :(得分:2)

<context:annotation-config/>只是不能在Spring 3.1.0上运行,但是<mvc:annotation-driven/>正常工作,我引用了this post

答案 1 :(得分:0)

我遇到了同样的问题,我所做的就是删除资源标签中的“**”。

答案 2 :(得分:0)

我遇到过类似的问题 - SO Question

您可以使用<mvc:annotation-driven/>或使用更高优先级的顺序自行提供处理程序映射 -

<bean id="annotationUrlMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="order" value="0" />
</bean>
<bean id="annotationMethodHandlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>