搞SpringBoot启动成功访问不了的那些事?

353 阅读2分钟
  • 前提更要: 写单体项目时候,啥玩意都写好了,然后启动,噔~,Postman告诉我404

  • 分析过程: 是不是觉得特别简单,这是程序员特别习以为常的一个bug

猜想一:在Postman测试的时候controller的接口没写对呗, 解决方案:错了改成一样就行

R-C.webp

因为我是cv过去的,程序员的经典操作,这种情况排除

猜想二:启动类放错了? 确实会有这种情况 解决方案:调整启动类位置,或者配置Spring的扫描路径

image.png

但是我的是放在项目名的下一层,可以扫描到启动类的当前包以及子包

R-C.webp

猜想三: 配置多个SpringBootServletInitializer子类?【百度查询到的,没有线上部署,所以排除该猜想】 blog.csdn.net/web_1553420…defaultbaidujs_baidulandingword~default-0-126506731-blog-129897392.235^v38^pc_relevant_anti_vip&spm=1001.2101.3001.4242.1&utm_relevant_index=3

R-C.webp

猜想四:注解混用

情况一:RestController注解与Controller混用 @RestController 和 @Controller 都可以用来标识一个控制器类。不同之处在于 @RestController 是一个组合注解,包括了 @Controller 和 @ResponseBody 两个注解的功能,并且默认返回 JSON 格式数据。 如果你同时使用了 @RestController 和 @Controller 注解来标识一个控制器类,那么这可能会引起冲突或不一致性的问题。因为 @Controller 默认返回的是视图,而 @RestController 默认返回的是 JSON 数据,这两种类型的请求结果是不一样的。

情况二:错误认为@ComponentScan可以扫描到mapper @ComponentScan 注解用于扫描标识了特定注解的组件类,例如 @Component、@Service、@Controller、@Repository 等。在 Spring Boot 应用中,通常在启动类上使用 @SpringBootApplication 注解,该注解包含了 @ComponentScan 注解,会自动扫描应用程序主包及其子包下的所有组件类,因此你只需要在启动类所在的包内或其下一级包中定义组件类即可。

@MapperScan 注解用于扫描 MyBatis 中的 Mapper 接口,并将其加入到 Spring 容器中管理,从而可以通过 @Autowire 注解进行注入。如果你使用的是 MyBatis,那么你需要在配置类上添加 @MapperScan 注解并指定 Mapper 接口所在的包名

image.png

猜想五:端口不一致

可能你同时开启了几个项目,然后测试的时候没有更改,当然找不到。 解决方案:更改一致就可以了 blog.csdn.net/web_1553420…defaultbaidujs_baidulandingword~default-0-126506731-blog-129897392.235^v38^pc_relevant_anti_vip&spm=1001.2101.3001.4242.1&utm_relevant_index=3 R-C.webp

猜想六:配置的时候,扫描路径不正确

解决方案:进行比对更改

R-C.webp

终极必杀技:检查应用程序的日志,查看是否有任何错误或者异常 www.fke6.com/html/5I0UO1…

image.png

  • 解决:我的情况是猜想四,因为把注解混用的造成404,更改一下就可以了