我有一个类似于
的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个抽象方法,这个抽象类是控制器扩展的。
我想要一些自动的东西。
答案 0 :(得分:1)
现在跟踪器存在问题..请参阅https://jira.spring.io/browse/SPR-14526
答案 1 :(得分:0)
我看到的所有注释几乎都是一样的。原因是,扫描它们的代码只检查层次结构中最低级别的子级。
作为一种解决方法,我建议在基类中编写受保护的包装器方法。然后,您可以从实现此接口的基类或派生类中使用它。这与你的建议相似。
最后,作为一些友好的建议,从纯粹的结构角度扩展其他Controller类可能是一个坏主意。你几乎总会后悔。