2017-10-26 28 views
0

を編集してください。私は書いたことを繰り返す必要はありません。Spring MVC(Spring Boot) - リクエストマッピングの継承

ウェブを見ると、この件についてかなり混乱していました。 私が探しているのは、ControllerRequestMappingアノテーションの値を拡張する良い方法です。

ような:

@Controller 
@RequestMapping("/api") 
public class ApiController {} 

@Controller 
@RequestMapping("/dashboard") 
public class DashboardApiController extends ApiController {} 

結果は("/api/dashboard")なければなりません。

このアプローチでは、明らかにRequestMappingの値が上書きされます。 作業アプローチは、でなく、派生クラスにRequestMapping注釈を付けることができます。

@Controller 
public class DashboardApiController extends ApiController 
{ 
    @GetMapping("/dashboard") 
    public String dashboardHome() { 
     return "dashboard"; 
    } 

    ... other methods prefixed with "/dashboard" 
} 

これは唯一可能なアプローチですか?私はそれが本当に好きではない。

+0

この質問はすでに[春MVCの... https://stackoverflow.com/q/5268643/2736849 –

+2

が重複する可能性が存在します@ RequestMapping Inheritance](https://stackoverflow.com/questions/5268643/spring-mvc-requestmapping-inheritance) – g00glen00b

+0

@MuhammadFaisalHyder私は知っています。 Spring MVCとSpring Bootの新しいリリースが登場しましたが、ドキュメントはいつものように少し狡猾です。また、誰かがこの問題を解決するための素敵なトリックを思いついたかもしれません – LppEdd

答えて

0

値はサブクラスでオーバーライドされ、追加されません。子クラスのフルパスを指定する必要があります。

0

あなたがしようとしているものを達成することができます。この場合、

@Controller 
@RequestMapping("/api") 
public class DashboardApiController extends WhateverClassWithWhateverMapping 
{ 
    @RequestMapping("/dashboard") 
    public String dashboardHome() { 
     return "dashboard"; 
    } 

} 

を追加することによって、それは「/ API /ダッシュボード」になります。サブクラスで正確に同じパラメータの上書き用

値、彼らが蓄積しない

関連する問題