Как разрешить конфликт между тегом <resources 'и тегом <context: component-scan .. "для демонстрационного проекта Spring MVC - PullRequest
2 голосов
/ 03 октября 2011

В настоящее время я работаю над проектом Spring MVC, и у меня есть некоторые проблемы с использованием тега "<MVC:resource " SpringMVC для загрузки статического ресурса. Поэтому я скачал демонстрационный проект springMVC и внес в него некоторые изменения, чтобы проверить этот тег.

Так как мой проект простой, мне кажется, что два тега для "translationservice" не нужны.

Однако после того, как я удалил эти два тега, произошло что-то проводное. Если у меня настроены тег для статических ресурсов "<resources mapping="/resources/.." и тег "<context:component-scan base-package="org.springframework.samples.mvc" />" (в controllers.xml), то я не могу получить доступ к любому URI, который аннотирован на контроллерах - он возвращает ошибку 404 not found. если я закомментирую тег сопоставления ресурсов, то эти контроллеры будут работать нормально.

Кто-нибудь когда-либо сталкивался с такой ситуацией? Есть идеи, как обойти это?

<?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 ]

2 голосов
/ 20 марта 2012

<context:annotation-config/> просто не работает на Spring 3.1.0, но <mvc:annotation-driven/> просто работает, я ссылался на этот пост

0 голосов
/ 17 января 2016

Я столкнулся с подобной проблемой - ТАК вопрос

Вы можете использовать <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"/>
0 голосов
/ 08 ноября 2011

У меня возникла та же проблема, и я удалил «**» в теге ресурса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...