【问题标题】:isHandler Method of RequestMappingHandlerMapping retunrs true for both RequestMapping and Controller annotationisHandler RequestMappingHandlerMapping 的方法为 RequestMapping 和 Controller 注解返回 true
【发布时间】:2014-11-03 17:00:28
【问题描述】:

我正在研究 Dispatcher Servlet 代码。在这里,我发现调度程序 servlet 使用 HandlerMapping 来选择请求的处理程序。此外,RequestMappingHandlerMapping 被用作 HandlerMapping 的实现。现在,如果所考虑的 bean 具有 @Controller 或 @RequestMapping 注解,则 RequestMappingHandlerMapping 的 isHandlerMethod 返回 true。如果某个 bean 仅在类级别应用了 @RequestMapping 注释,它是否仍被视为 Handler? 任何帮助将不胜感激。

【问题讨论】:

    标签: java spring


    【解决方案1】:

    @RequestMapping 和@Controller 注解有不同的含义。请求映射用于决定使用哪个类/方法来处理对特定 URL 的请求。如果您查看@Controller 注释的来源,您会发现它是用@Component 本身注释的。通过这种方式,它可用于设置组件扫描,将类的实例注册为 bean。

    我很怀疑,因为这些注释通常一起使用,所以这样做是为了实现微小的性能提升。此外,您可以通过 java config 或 xml 以不同方式声明您的控制器。

    编辑: 我已经用 java config 中声明的控制器 bean 做了一个快速原型,没有 @Controller 注释。答案是肯定的,该方法将用于处理请求,即使该类没有注解。

    【讨论】:

    • 感谢您的回复。我的怀疑是根据 RequestMappingHandlerMapping 的 isHandler 方法,即使我只用 @RequestMapping 注释来注释我的类,它仍然会被视为处理程序类并且它的方法扫描处理程序方法。
    猜你喜欢
    • 2020-02-09
    • 2016-01-07
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多