java – 如果在XML中定义处理程序映射,则不会获取我的@RequestMappings

前端之家收集整理的这篇文章主要介绍了java – 如果在XML中定义处理程序映射,则不会获取我的@RequestMappings前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用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中,现在一切正常:

猜你在找的Spring相关文章