Spring Boot访问不到controller

本文探讨了Spring Boot新手遇到的Controller无法访问问题,涉及扫描范围、注解使用、URL配置、版本差异等,并提供了详细解决方案。

Spring Boot访问不到controller

转载【https://www.it610.com/article/1280559007999737856.htm

  最近开始学习spring boot,做练习时候访问不到controller,报了404错误。开始以为是没有扫描到的问题,后来发现还有其他原因。下面我们总结一下访问不到controller的错误原因。

首先,出现这个异常说明了跳转页面的url无对应的值. 

异常:This application has no explicit mapping for /error, so you are seeing this as a
fallback.

 

Spring Boot访问不到controller_第1张图片

 

 解决方案:

1. 确认是否扫描到了controller,Application启动类的位置是否正确。

Application启动类的位置不对。要将Application类放在最外侧。即包含所有子包 
原因:spring-boot会自动加载启动类所在包下以及其子包下的所有组件。

例如:下图会扫描Application启动类包下(即mycode包)、以及其子包(这里的controller包)。

Spring Boot访问不到controller_第2张图片

2. 确认输入项目路径是否正确,如:http://localhost:8080/index,这里需要注意的是端口号的查看。

Spring Boot访问不到controller_第3张图片

3.确认注解是否用对

在 Controller 层类上面使用的注解是 @RestController 而并非是 @Controller,或者是 @Controller + @ResponseBody;
详解:如果返回 String 或者 json 的话就直接类上用 @RestController;
   如果想要页面跳转的话,就使用 @Controller;
   如果只有在某方法上返回 json,其他方法跳转页面,则在类上添加 @Controller,在需要返回 String 和 json 的方法上添加 @ResponseBody 注解;

4.确认导入项目注解的包地址是否正确

@RequestMapping("/hello")
import org.springframework.web.bind.annotation.RequestMapping;
@RestController
import org.springframework.web.bind.annotation.RestController;

5.控制器的URL路径书写问题 
@RequestMapping(“xxxxxxxxxxxxxx”) 
实际访问的路径与”xxx”不符合,注意对应一下自己访问的url与@RequestMapping中填写的是否一致,千万别忽略了多了一个空格的问题。

6.配置了上下文路径,使用了server.context-path

这里着重说一下这个问题,这也是博主犯得错误。博主使用的SpringBoot版本为2.1.1,而server.context-path在2.0版本中已经弃用了,采用 server.servlet.context-path由于版本的差异导致了配置的上下文路径无效。

Spring Boot访问不到controller_第4张图片

 SpringBoot版本配置
1.xserver.context-path
2.xserver.servlet.context-path

 

建议大家可以专门参考一下spring boot 1.x版本和2.x版本的差别,这样后续学习或者工作过程中有相关问题可以减少很多麻烦。如果以上文章没有解决您的问题,可以在下方留言,我看到的话会第一时间回复。还请大家多多指教。

### 解决Spring Boot Controller 不工作的问题 当遇到Spring Boot应用程序中的控制器(Controller)无法正常工作的状况时,有几种常见的原因和解决方案可以考虑。 #### 1. 控制器类未被扫描到 确保控制器所在的包及其子包已经被`@SpringBootApplication`注解所标注的启动类覆盖。如果控制器位于不同的模块或不在默认扫描路径下,则可能需要显式指定组件扫描的位置[^2]。 ```java @SpringBootApplication(scanBasePackages={"com.example.controller"}) public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` #### 2. 缺少必要的依赖库 确认项目中包含了构建Web应用所需的核心依赖项,比如`spring-boot-starter-web`。这可以通过Gradle配置文件来实现: ```gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' } ``` 对于Maven用户来说,应该在`pom.xml`里加入相应的依赖声明[^3]。 #### 3. 请求映射定义错误 检查控制器内的请求处理方法上是否有正确的HTTP动词(`GET`, `POST`)以及URL模式匹配。例如: ```java @RestController @RequestMapping("/api/v1") public class ExampleController { @GetMapping("/hello") public String sayHello() { return "Hello World!"; } } ``` 这里需要注意的是,`@RestController`是一个组合注解,它相当于同时使用了`@Controller`和`@ResponseBody`两个注解;而`@RequestMapping`用于设置基础路径,具体的端点由其下的具体方法通过如`@GetMapping`等进一步细化[^4]。 #### 4. 应用程序属性配置不当 有时问题也可能源于application.properties 或 application.yml 文件里的配置参数不正确。特别是涉及到服务器监听地址、端口或者其他网络相关设定的地方。确保这些值适合当前环境,并且不会与其他服务冲突。 #### 5. 日志级别过高掩盖异常信息 适当调整日志记录级别的高低可以帮助定位潜在的问题所在。较低的日志等级能够提供更多调试细节,在开发阶段建议暂时降低至DEBUG甚至TRACE级以便更好地观察内部运作情况。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值