问题表象: postman调用接口报404错误详解 每天的BUG奇奇怪怪。。
使用 Spring Boot 进行开发
0.正常情况是以下图示
1.如果访问的服务未开通或端口不对应该是下面的响应状态
2.如果URL路径中服务名拼写错误,如下图所示 HTTP Status 404 - Not Found
3.如果URL路径中,接口路径拼写错误 404 Not Found
然而本次错误,看起来和 2 的情形一样,但是认真检查URL后确保不是URL路径的问题,因为示例无参,暂忽略传参格式错误,排查过程如下
【1】排查对应Controller类是否 注解引入错误或缺少注解 【正确】
使用@RestController 或 @Controller
【2】启动类没有扫描controller包中的注解 [存疑 - 验证]
【2-1】启动类和controller的位置关系是否正确,保证启动类 和 Controller 有 共同的 父包 。如图中的myproject。 【正确】
【2-2】增加@ComponentScan注解,在注解中,写明需要扫描的包,如图中的controller,运行项目后未能成功运行,报错中提示spring-web的相关异常
所以确实未扫描到controller ,可以将启动类的@ComponentScan注解删除【正常情况下是可以自动扫描到Controller类,无需手动指定】,
怀疑 spring-web 依赖应该是有冲突或者是版本不兼容
我将该依赖注释掉 这个依赖是@RestController等注解和上传文件的 MultipartFile 所使用,是使用IDEA的快捷引入依赖的方式添加的
#依赖版本过高,导致项目报错
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.30</version>
</dependency>
因为本项目使用spring框架版本是比较旧的【2.5.8】,所以找到了兼容版本的自适应依赖
#使用下面合适的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
至此 项目可以正常启动,postman测试接口正常返回。
版权归原作者 書生丶龙 所有, 如有侵权,请联系我们删除。