0


Springboot正常启动但打开页面遇到404错误

开发基于Spring Boot的应用程序过程中,springboot正常启动但打开页面遇到404错误。

原因分析与解决方案

原因一:控制器未被Spring容器扫描到

症状描述

  • 启动应用时无明显错误提示,但尝试访问特定URL时收到404错误。

原理:

声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描
·@ComponentScan注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解 ·@SpringBootApplication中,默认扫描的范围是启动类所在包及其子包。

解决方案

  1. 检查启动类位置:确保启动类位于项目的适当目录结构内,如 src/main/java/com.example 而非根目录下。
  2. 调整@ComponentScan范围:默认情况下,Spring Boot只会扫描启动类所在包及其子包。若控制器位于不同包中,需在启动类上显式添加 @ComponentScan("com.example") 来明确扫描范围。
@SpringBootApplication
@ComponentScan("com.example")
public class Application {
    ...
}
原因二:响应体设置不当

症状描述

  • 控制器方法已正确实现,但在试图获取其输出结果时仍显示404错误。

解决方案

  1. 使用@ResponseBody:对于希望直接返回数据而非跳转至HTML页面的情况,应在控制器方法前添加 @ResponseBody 注解。
  2. 考虑@RestController:此注解可同时替代 @Controller@ResponseBody,适用于所有方法都期望以这种方式工作的场景。
@RestController
@RequestMapping("/api")
public class MyController {
    @GetMapping("/data")
    public String getData() {
        return "Your data here";
    }
}
原因三:部署方式影响

症状描述

  • 应用程序被打包成WAR文件并在Tomcat服务器上部署时,访问某些端点时会出现404错误。

解决方案

  1. 重写configure方法:在启动类中重写 configure 方法,确保应用程序能够正确初始化。
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
  1. 调整POM文件:如果计划在外部Tomcat服务器上部署,应修改Maven POM文件,将 spring-boot-starter-tomcat 的依赖范围设为 provided
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

参考:spring boot正常启动之后访问controller下接口报404的解决方案_springboot 配置好controller 后访问无法访问-CSDN博客


本文转载自: https://blog.csdn.net/2301_76541209/article/details/143217847
版权归原作者 旧故新长 所有, 如有侵权,请联系我们删除。

“Springboot正常启动但打开页面遇到404错误”的评论:

还没有评论