我在控制器上使用带有注释的<context:component-scan>
Spring 3.0.5。@RequestMapping
这有效,并且 URL 由包扫描注册。
但是当我在 XML 配置中定义了一个处理程序映射时,就会出现问题。@RequestMapping
不再拾取注释。
我已将问题隔离为一个简单的应用程序。
如果我有以下控制器:
package test.pack.age;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
@RequestMapping(value="/test")
public String showTestPage() {
return "testPage";
}
}
和以下配置:
<context:component-scan base-package="test.pack.age" />
<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>
应用程序正常工作,并且 URL/test
已注册并正常工作。
18/09/2011 20:02:55 org.springframework.web.servlet.handler.AbstractUrlHandlerMapping INFO Mapped URL path [/test] onto handler 'testController'
18/09/2011 20:02:55 org.springframework.web.servlet.handler.AbstractUrlHandlerMapping INFO Mapped URL path [/test] onto handler 'testController'
但是,如果我将处理程序映射添加到 XML,它将不再起作用。甚至像这样简单的事情:
<bean id="handlerMappings" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" />
它基本上什么都不做,并且<context:component-scan>
不再注册我的 URL。
我需要为一些我无法注释的(第三方)控制器提供额外的处理程序映射,但是当添加它时它会破坏我所有的@RequestMapping
s.
这是正常的吗?一个错误?(我无法更改 Spring 版本)
我错过了什么吗?