我正在使用Spring 3.0.5和< context:component-scan>和我的控制器上的@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";
}
}
以及以下配置:
应用程序正常工作,URL /测试已注册并正常工作.
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的处理程序,它就不再起作用了.即使是这样简单的东西:
它基本上什么都不做,而且< context:component-scan>不再注册我的网址.
我需要为某些(第三方)控制器添加额外的处理程序映射,我无法对其进行注释,但在添加它时会破坏我的所有@RequestMappings.
这是正常的吗?一个bug? (我无法更改Spring版本)
我错过了什么吗?
Is this normal? A bug? (I can’t change the Spring version)
Am I missing something?
我错过了一些东西:D.发现这个埋在Spring的JavaDocs中为DefaultAnnotationHandlerMapping:
NOTE: If you define custom HandlerMapping beans in your DispatcherServlet context,you need to add a DefaultAnnotationHandlerMapping bean explicitly,since custom HandlerMapping beans replace the default mapping strategies.
将此添加到我的配置XML中,现在一切正常: