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 を拡張させたくないので、それはオプションではありません)。