Java 将spring控制器绑定到根控制器

Java 将spring控制器绑定到根控制器,java,spring,controller,Java,Spring,Controller,我有几个端点具有相同的请求映射: @RequestMapping("/api/client/personal") @RequestMapping("/api/client/finance") @RequestMapping("/api/client/contacts") @RequestMapping("/api/client/job") 我想找到一种方法,使根控制器具有@RequestMapping(“/api/client”) 这就限制了通话 @RequestMapping("/perso

我有几个端点具有相同的请求映射:

@RequestMapping("/api/client/personal")
@RequestMapping("/api/client/finance")
@RequestMapping("/api/client/contacts")
@RequestMapping("/api/client/job")
我想找到一种方法,使根控制器具有
@RequestMapping(“/api/client”)
这就限制了通话

@RequestMapping("/personal")
@RequestMapping("/finance")
@RequestMapping("/contacts")
@RequestMapping("/job")

到他们右边的控制器。我该怎么做呢?

您需要一个多态父类 例如:


这可能是一个解决办法吗

@RestController
@RequestMapping("/api/client")
public class RootController {

    @Autowired
    PersonalController personalController;

    @Autowired
    FinanceController financeController;

    @RequestMapping("/personal")
    public PersonalController personalController() {
        return personalController;
    }

    @RequestMapping("/finance")
    public FinanceController financeController() {
        return financeController;
    }
}

是的……这可能是一个解决方案。您不想将它们声明为不同的类是有原因的吗?始终可以选择将它们放在具有类似请求映射路径的不同文件中,例如:
@requestMapping(“/api/client”)公共类RootController{}@requestMapping(“/api/client/personal”)公共类PersonalController{}
,只需不声明相同的控制器即可。。。选项是什么?选项是在不同的类和文件中声明它们。您可以有一个名为RootController.java的java类,它看起来像
import@RequestMapping(“/api/client”)公共类RootController{//root controller stuff}
名为PersonalController.java的类
导入@RequestMapping(“/api/client/personal”)公共类PersonalController{//PersonalController stuff}
这些类不会链接在一起(它们不必链接在一起),它们将通过您请求的路径连接<代码>@RequestMapping(…)
@RestController
@RequestMapping("/api/client")
public class RootController {

    @Autowired
    PersonalController personalController;

    @Autowired
    FinanceController financeController;

    @RequestMapping("/personal")
    public PersonalController personalController() {
        return personalController;
    }

    @RequestMapping("/finance")
    public FinanceController financeController() {
        return financeController;
    }
}