1

我有一个用于 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 个抽象方法,这个抽象类是控制器扩展的。
我想要一些自动的东西。

4

2 回答 2

1

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

于 2016-07-29T15:23:21.963 回答
0

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

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

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

于 2012-06-21T14:03:54.710 回答