如果子类的方法与父类的 @RequestMapping 相同,会出现冲突,这是因为 Spring MVC 会将子类和父类的映射路径都注册到处理器映射器中,而映射路径相同会导致处理器映射器无法判断哪一个方法要处理请求。

解决方法:

  1. 重写父类的 @RequestMapping 注解,给子类的方法添加一个不同的路径。

  2. 在子类的 @RequestMapping 注解中添加一个 unique 属性,将其设置为 true,这样 Spring MVC 就会只将子类的映射路径注册到处理器映射器中,从而避免冲突。例如:

    @Controller
    @RequestMapping("/parent")
    public class ParentController {
    
        @RequestMapping(value = "/hello")
        public String hello() {
            return "hello from parent";
        }
    }
    
    @Controller
    @RequestMapping(value = "/child", unique = true)
    public class ChildController extends ParentController {
    
        @RequestMapping(value = "/hello")
        public String hello() {
            return "hello from child";
        }
    }
    

    在这个例子中,子类的 @RequestMapping 注解中添加了 unique 属性,并将其设置为 true。这样,子类的映射路径就不会和父类的映射路径冲突

springboot requestMapping 公共父类子类的方法相同冲突

原文地址: https://www.cveoy.top/t/topic/fy0m 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录