如何通过继承实现多个Spring Controller共享基础@RequestMapping路径?
能否通过继承为多个Controller设置统一的基础请求路径?
当然可以通过继承实现这个需求,这样能避免在每个Controller上重复添加相同的@RestController和@RequestMapping("/extranet")注解,减少冗余代码。
具体实现方式
- 先创建一个基础父类Controller,把通用的注解统一放在这个类上:
@RestController @RequestMapping("/extranet") public class BaseExtranetController { // 这里可以存放所有子类共享的方法或属性,比如通用日志处理、公共工具方法等 }
- 让各个业务Controller直接继承这个父类,无需再重复添加基础路径相关注解:
public class BillingController extends BaseExtranetController { @GetMapping("/billing") public String getBilling() { return "Hi From billing!!"; } }
public class PublicationController extends BaseExtranetController { @GetMapping("/publication") public String getPublication() { return "Hi From publication!!"; } }
这样配置后,BillingController的接口路径依然是/extranet/billing,PublicationController的接口路径依然是/extranet/publication,和原实现效果完全一致。后续如果需要修改基础路径,只需要修改父类的@RequestMapping值,所有子类都会自动同步变更。
内容的提问来源于stack exchange,提问作者robert trudel
相关产品推荐
相关产品推荐

