- 开发项目过程中有个需求是业务Controller的@RequestMapping上都有"/api/v1"这种共有的Path,以后也有可能变成"/api/v2"、"/api/vn"等。所以想写个BaseController,在BaseController上标注"/api/v1",业务Controller继承BaseController,项目启动时自动把BaseController上的Path追加到业务Controller的Path前面。
- 实现过程,重写RequestMappingHandlerMapping的getMappingForMethod方法,将BaseController上的Path追加上去。实现WebMvcRegistrations接口将自己的RequestMappingHandlerMapping注册。直接上代码
-
import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.lang.Nullable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.mvc.condition.RequestCondition; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Method; /** * @Descp RequestMappingHandl
Controller的@RequestMapping拼接父类Controller@RequestMapping的Path
于 2022-05-17 11:48:49 首次发布