Spring JDBC项目运行报500 BeanCreationException 疑为路径映射配置错误
错误根因
你的org.springframework.beans.factory.BeanCreationException异常是请求映射重复冲突直接导致的:
在RideController类中,createRide和updateRide两个方法使用了完全一致的映射规则:@RequestMapping(value="/ride",method=RequestMethod.PUT),Spring MVC 初始化控制器Bean时不允许同路径+同请求方法对应多个处理方法,因此直接抛出Bean创建失败异常,服务启动异常后访问接口就会返回500错误。
修复方案
- 优先按REST规范调整请求方法区分接口:
创建资源使用POST请求,更新资源使用PUT请求,修改对应注解即可:
// 把原来的createRide方法注解替换 @PostMapping("/ride") public @ResponseBody Ride createRide(@RequestBody Ride ride){ return rideService.createRide(ride); } // 原来的updateRide可以直接用简化注解 @PutMapping("/ride") public @ResponseBody Ride updateRide(@RequestBody Ride ride){ return rideService.updateRide(ride); }
修改后同步调整单元测试testCreateRide方法中的调用逻辑,把restTemplate.put替换为restTemplate.postForObject即可。
2. 如果你要保留PUT方法做创建逻辑,也可以给两个接口配置不同的路径区分,比如/ride/create和/ride/update。
3. 额外注意:浏览器地址栏默认只能发起GET请求,PUT、DELETE、POST类型的接口无法直接通过浏览器地址输入测试,需要用单元测试、Postman等工具调用验证。
内容的提问来源于stack exchange,提问作者Av11
相关产品推荐
相关产品推荐

