1

私はspring-mvc3.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は、これを修正しようとしているバグまたは何かとして認識していますか?

編集:-1つの醜い方法は、メソッドを変換する抽象クラスを持つことです。つまり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 に答える