我正在尝试在 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
方法。AController
这种类型的请求映射继承在使用时实际上适用于 Java 类extends
;那么为什么它不适用于 Groovy 的mixin
呢?我猜要么是mixin
转换不传输方法上的注释,要么是spring的组件扫描器在处理mixin之前工作。无论哪种方式,是否有一种更规范的方式来实现此功能(我不希望 AController 出于其他原因扩展 Reporter,所以这不是一个选项)?