2017-05-17 13 views
0

は、私は私の春のブートアプリで以下の設定を持っている:春ブーツ抽象コントローラー・リクエスト・マッピング

@RestController 
@RequestMapping ("/main/**") 
class Child extends Parent { 
// Child code 
} 

abstract class Parent { 
// Other code 
@RequestMapping ("/sub/**") 
public ResponseEntity handle(RequestEntity re) { 

// Expected to handle requests with path pattern /main/sub/** 

} 

目標は、パスパターンのためのすべての着信要求を受信するための抽象親のコントローラーでハンドル()メソッドを持っていることです"/ main/sub/**"と入力します。

しかし、動作していません。それは私のハンドルのメソッド(親コントローラから)子コントローラ内の要求マッピングと一緒に配置する場合は動作しますが。

私がここで紛失しているものを特定するのに役立つ人はいますか?

ラルフにより示唆されるように、以下のより詳細なコード:メソッドハンドル(RequestEntityが)あなたの子供のコントローラである場合には、これより:

@RestController 
    @RequestMapping ("/main/**") 
    class Child<T> extends Parent<T> { 
    // Child code only overrides those methods defined in the parent, and has no request mapping for any method within this class. And it does not override the handle() method defined in parent. 
    } 

    abstract class Parent<T> { 
    // Other code 
    @RequestMapping ("/sub/**") 
    public @ResponseBody ResponseEntity<?> handle(RequestEntity<T> re) { 
    // Expected to handle requests with path pattern /main/sub/ 
    } 
} 

答えて

1

ただ予想通り1ケースを除いて、働く、あなたの例を試してみましたあなたの親コントローラ内のものよりも優先され、呼び出されることはありません。そうでない場合は、子コントローラのコードを提供してください。

+0

ありがとうございます。私は上記の私のポストで詳細なコードを追加しました。更新されたものがクラステンプレート変数を使用していること以外は、大きな違いはありません。私はこれがリクエストマッピングの失敗と何か関係があるのだろうかと思います。 – Ram