spring mvc的参数注释不是继承的

时间:2012-06-21 11:29:26

标签: spring-mvc

我有一个类似于

的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没有效果,直到我复制粘贴注释到参数前的相应位置。有人知道有没有办法解决这个问题?和/或春天承认这是一个它想要解决的错误或什么?

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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