【问题标题】:Parameter annotations of spring mvc are not inheritedspring mvc的参数注解不被继承
【发布时间】:2012-06-23 15:07:06
【问题描述】:

我有一个用于 spring-mvc 3.1 控制器的接口,看起来像

  public interface RestCRUDOperations<T> {
         @RequestMapping(value = "/{id:\\d+}", 
                         method = RequestMethod.GET, 
                         produces = "application/json")
         public  ResponseEntity<T> getById(@PathVariable("id") String sourcId);
         //other code omitted
  }

我观察到的是,在实现类时,@RequestMapping 注释仍然有效(我不必将其复制到方法实现上)但 @PathVariable 没有效果,直到我将注释复制粘贴到相应的位置在参数之前。有谁知道是否有办法解决这个问题?和/或spring承认这是一个它打算修复的错误或什么?

编辑:- 一种丑陋的方法可能是有一个抽象类翻译方法,即public abstract class RESTAdapter implements RestCRUDOperations,它为这些方法提供最终实现并委托给 2 个抽象方法,这个抽象类是控制器扩展的。
我想要一些自动的东西。

【问题讨论】:

    标签: spring-mvc


    【解决方案1】:

    我见过的所有注释几乎都是一样的。原因是,扫描它们的代码只检查层次结构中最低级别的子节点。

    作为一种解决方法,我建议在基类中编写一个受保护的包装方法。然后,您可以从实现此接口的基类或派生类中使用它。这与您的建议类似。

    最后,作为一个友好的建议,从纯粹的结构角度扩展其他 Controller 类可能是个坏主意。你几乎总是会后悔的。

    【讨论】:

    • 这在 Jersey 中运行良好,接口上的 @RequestMapping 注解在 Spring MVC 中运行良好。这似乎是一件非常武断的事情。
    【解决方案2】:

    现在跟踪器出现问题.. 见https://jira.spring.io/browse/SPR-14526

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      相关资源
      最近更新 更多