2016-05-25 4 views
1

私たちのプロジェクトでは、インターフェイスと実装クラスがあります 私たちは@RequestMappingアノテーションで注釈付けされたすべてのメソッドシグネチャを提供します。このインタフェースを実装しているクラスには、@RestControllerアノテーションと@RequestMappingアノテーションが注釈され、そのインタフェースのすべてのメソッドがオーバーライドされます。@RequestBodyまたは@RequestHeaderをメソッドパラメータとして与えると、SpringブートはRestful WSを作成しません

問題:方法のいずれにおいても、iはパラメータとして@RequestBody又は@RequestHeaderを与えると、ばねブートも界面における@RequestMappingに示さ/ V1/myapi /負荷のURLを作成していません。しかし、私はURLを作成するだけの空のパラメータを与える場合。

また、インターフェイスメソッドから@RequestMappingアノテーションを削除し、コントローラクラスのメソッドでメソッドパラメータに何も指定しなくてもそのメソッドを提供すれば、それもわかりました。

@RequestBodyまたは@RequestHeaderをメソッドパラメータとして使用すると、インターフェイスで提供される@RequestMappingが考慮されない理由を知りたいだけです。 (あなたは1を持っていることを選択した場合)

@Controller 
@RequestMapping("/v1/myapi/") 
public class MyControllerClass implements MyInterface{ 
@Override 
public ResponseObject method1(@RequestBody String request, @RequestHeader(name= HttpHeaders.AUTHORIZATION) String token){ 

} 

//Interface Class 
public interface MyInterface { 
     @RequestMapping(method = RequestMethod.POST,value="/load",produces = MediaType.APPLICATION_JSON_VALUE) 
ResponseObject method1(@RequestBody String request, @RequestHeader(name= HttpHeaders.AUTHORIZATION) String token) throws Exception; 
} 

答えて

0

注釈がすべて正しく機能するためには、コントローラ・インタフェースに実装したクラスまたはのいずれかでなければなりません。 @RequestMappingのJavaDocのからコピー:

注:コントローラ・インタフェース(AOPのプロキシ処理用など)を使用している場合、必ず一貫すべてあなたのマッピング・アノテーション入れて作る - 上 - など@RequestMappingや@SessionAttributesなどをコントローラーインターフェイスではなく、実装クラス。

+0

ありがとうございます。今、それは意味をなさない、私はすべての私のRequestMappingは、その中のメソッドのパラメータに関係なく作成されるのを見ることができます。 –

関連する問題