spring-mvc コントローラー クラスで Groovy mixin 変換を使用しようとしていますが、Spring は混合されたクラスからリクエスト マッピングを取得しません。
class Reporter {
@RequestMapping("report")
public String doReport() {
"report"
}
}
@Mixin(Reporter)
@Controller
@RequestMapping("/a")
class AController {
@RequestMapping("b")
public String doB() {
"b"
}
}
このコードを実行する.../a/bと、URL がマップされて機能しますが、.../a/reportマップされず、HTTP 404 が返されます。デバッグ モードでは、ダック タイピングdoReportでメソッド on にアクセスできます。AController
このタイプのリクエスト マッピングの継承extendsは、使用時に Java クラスで実際に機能します。では、なぜ Groovy では動作しないのmixinでしょうか? mixin変換がメソッドの注釈を転送しないか、ミックスインが処理される前にSpringのコンポーネントスキャナーが機能するかのいずれかだと思います。いずれにせよ、この機能を実現するためのより洗練された方法はありますか (他の理由で AController に Reporter を拡張させたくないので、それはオプションではありません)。