まず、私が持っているセットアップを説明しましょう。
私のWebアプリケーションは、モジュール1がモジュール2のコントローラー/サービスを使用して共通の機能を再作成し、コードの冗長性を取り除く方法で相互にリンクされた複数のモジュールで構成されています。簡単に言えば、1 つのアプリケーションのすべてのクラスが jar として別のアプリケーションに含まれている 2 つの別個の Web アプリケーションです。
現在、私が直面している問題は、次のシナリオに従って、サブモジュールの一般的な URL マッピングが原因です。
モジュール 1 のコントローラ A がモジュール 2 のコントローラ B を拡張
package com.module1;
@RequestMapping("/client")
public class A extends B {
@RequestMapping("/hello")
public void helloWorldNew(...) {
...
}
}
package com.module2;
@RequestMapping("/user")
public class B {
@RequestMapping("/")
public void helloWorld(...) {
...
}
}
モジュール 1 のコントローラー C がモジュール 2 のコントローラー D を拡張
package com.module1;
@RequestMapping("/client")
public class C extends D {
@RequestMapping("/helloworld")
public void helloWorldNew(...) {
...
}
}
package com.module2;
@RequestMapping("/human")
public class D {
@RequestMapping("/")
public void helloWorld(...) {
...
}
}
ご覧のとおり、モジュール 2 を個別に取り上げると、マッピングされた URL は/user/
&/client/
であり、これはあらゆる意味で合法です。モジュール 1 が登場すると、予想どおり、Spring は URL/client/
がすでにマッピングされてA.helloWorld()
いることを示す例外をスローしますC.helloWorld()
。
これを回避する方法はありますか?スーパークラスにあるメソッドレベルの RequestMappings を単純に無視するように Spring に依頼できますか? または、Spring をハックしてマッピングを無視/オーバーライドする方法はありますか (ルートレベルの RequestMappings のように)?
どんな助けでも大歓迎です。
ありがとう、
サミット