springboot正常启动后访问不到controller层的接口

一、问题描述

下面是我的springboot项目的一个controller类,在eclipse中用springboot内置的tomcat能正常访问接口。

 maven打成war包,部署到测试环境中,项目正常启动,定时任务正常启动,静态页面也能访问到,但是controller访问报错,没有找到对应的请求地址,如下:

二、解决尝试

既然找不到这个请求地址,就从controller问什么没有加载到去考虑。

尝试1:

启动类在controller外面,不加包扫描注解也会自动扫描controller下的类。

避免扫描不到,加了包扫描注解,尝试还是访问不到。

尝试二:

 controller类的注解,类上加@Controller注解,方法返回json,方法上加上@ResponseBody注解,没问题啊。还是访问不到。

 方法中改成@RestController注解,方法去掉@ResponseBody注解,还是访问不到。

尝试三:

maven把项目打成jar包方式启动,能正常访问到接口。很奇怪,但是不想用jar的方式。

尝试四:

重新写了一个新的controller类,新接口能访问到

 最后定位到mapping的value,访问不到的接口路径是.jspx结尾的,去掉.jspx就能访问到了。可能springboot对这个请求地址有过滤???

 

当时在别的项目中向前端提供的接口都是以.jspx结尾的,所以这次就从别的地方拷贝过来。关键是本地正常,jar包调用也正常,打成war包就访问不到。郁闷

### Spring Boot 应用启动后无法访问接口的原因分析 Spring Boot 应用启动成功但无法访问接口通常由以下几个原因引起: #### 1. **Controller类未被扫描到** 如果 `@RestController` 或 `@Controller` 所在的包不在主应用程序类所在的包及其子包范围内,则可能导致控制器未被加载。Spring Boot 默认会扫描主应用程序类所在包及其子包下的组件。 解决方案: 确保 Controller 类位于主应用程序类所在的包或其子包中,或者手动指定扫描路径。可以通过以下方式实现: ```java @SpringBootApplication(scanBasePackages = {"com.example.controller"}) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` #### 2. **Tomcat端口冲突** 当多个服务运行在同一台机器上并使用相同的默认端口(8080),可能会导致端口占用问题,进而引发请求失败。 解决方案: 修改 `application.properties` 文件中的服务器端口号以避免冲突。 ```properties server.port=9090 ``` 此外,可以动态获取实际使用的端口并通过日志打印出来[^2]。 #### 3. **上下文路径设置错误** 如果设置了自定义的应用上下文路径而未正确配置客户端 URL 请求路径,则可能造成资源不可达的情况。 解决方案: 确认 `application.properties` 中是否有如下配置项,并调整前端调用地址匹配该路径前缀。 ```properties server.servlet.context-path=/myapp ``` #### 4. **静态资源配置不当** 对于某些场景下需要返回 HTML 页面或其他静态文件时,如果没有按照约定目录放置这些资源也可能触发此现象。 解决方案: 将所有的静态资产放入标准位置如 `/src/main/resources/static/`, 并验证浏览器发出的确切URL是否符合预期[^3]。 #### 5. **跨域限制(CORS)** 前后端分离架构里存在不同源之间互相通信的需求,若缺乏适当处理则会被阻止访问APIs. 解决方案: 全局启用CORS支持或是针对特定endpoint开放权限即可解决问题. ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowedOrigins("*"); } } ``` --- ### 总结 以上列举了几种常见的致使 springboot 正常启动却依旧遭遇 controller 接口寻址不到的情形以及对应的修复办法。每一种状况都需要开发者依据实际情况逐一排查定位根本诱因后再采取相应措施加以修正[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值