我希望能够定义一个具有“/api”映射的父 Controller 类,然后用我的不同实现扩展该 Controller 。
所以 ApiController 将有:
@Controller
@RequestMapping("/api")
例如,我的用户 Controller 应该扩展基本 api Controller ,并将“/users”添加到路径中,因此它将响应“/api/users”请求。所以 UserController 将有:
@Controller
@RequestMapping("/users")
但由于它扩展了 ApiController,它将有效地响应/api/users。
当然,我可以在所有 Controller 前面加上“/api”,这样就可以在没有父类的情况下实现这一点,但如果可能的话,我更喜欢“以正确的方式”来做,这样我就可以用更清晰、更明显的方式定义我的 api 实现小路。
我尝试扩展 ApiController 基类,但这不起作用,UserController 仍然响应“/users”并忽略基类“/api”。
最佳答案
嗯。你可以试试这个,它对我有用:
@RequestMapping("/abstract")
public abstract class AbstractController {
}
@Controller
public class ExtendedAbstractController extends AbstractController {
@RequestMapping("/another")
public String anotherTest() {
return "another";
}
}
注意,你的基类不能有
@Controller
注释并且必须是 摘要 .如果您尝试扩展注释为 Controller 的非抽象类并且具有
@RequestMapping
您在 RequestMappingHandlerMapping
的步骤中遇到错误初始化。
关于spring - 实现 Spring Controller 时共享一个公共(public)父路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11922679/