一天一坑系列无法访问Controller:SpringBoot项目启动后,请求无法进入控制器Controller中(可以进入服务,但是无法访问控制器)

Posted 善良勤劳勇敢而又聪明的老杨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一天一坑系列无法访问Controller:SpringBoot项目启动后,请求无法进入控制器Controller中(可以进入服务,但是无法访问控制器)相关的知识,希望对你有一定的参考价值。

热门系列:


1.前言

最近任务紧,需求“享之不尽”。。开发联调之时,却出现了如题的一个Question。正是忙的时候,却出现这种幺蛾子,WTF。。

还是那句话,抱怨是没有卵用的。。抓紧解决问题咯。。。。


2.正文

2.1 问题分析

  1. 首先,同样的代码。开发环境会出现这种问题,测试环境不会!!!这里有猫腻、、、、
  2. 其次,项目服务启动后,接口是可以访问到该服务的。只是进入不到相应的控制器、、、
  3. 最后,接口访问的路径,有对比过,不存在路径问题、、、

2.2 解决问题

根据上面的第二条,先来说说为什么可以肯定服务是没有问题的。因为我们的接口,都是有过滤器和拦截器,以及网关的处理的。通过调用,发现接口是会进入到该服务的拦截器中,因此可以说明,服务是可以能够访问的!!!

那么为什么进入不到控制器中呢?根据第一条分析的思路,我开始分支的代码对比。。发现了如下一个可以的配置信息:

发现根项目的文件中,SpringBoot和SpringCloud的版本号配置,升了一个版本。以前用的是下面这个旧版本配置:

<springcloud.dependencies.version>Greenwich.RELEASE</springcloud.dependencies.version>
<springboot.dependencies.version>2.1.5.RELEASE</springboot.dependencies.version>

问题解决:回退旧版本,重试之后,发现接口就可以正常访问了。。。那么问题,看来就出现在这个配置版本升级这里了。。。


3.总结

上面的问题虽然找到了原因,但是具体导致的问题点,还没有深入了解。个人推想,应该是不同的版本配置,导致部分想依赖的代码冲突或是失效了,例如springboot中的tomcat没有加载到启动项目中的控制器所导致的问题出现。

当然,这里只是我个人的一个分析与设想,因为比较忙,暂时无暇深入。。如果有知道原因的朋友,也欢迎下方留言讨论。。

最后,提醒各位道友们,SpringBoot和SpringCloud有明确且严格的版本匹配,所以使用时,一定要对应版本使用。。并且,其他一些类库也会部分对于各个版本有不同的强依赖,所以,版本选择,请谨慎考虑!!!!

 

以上是关于一天一坑系列无法访问Controller:SpringBoot项目启动后,请求无法进入控制器Controller中(可以进入服务,但是无法访问控制器)的主要内容,如果未能解决你的问题,请参考以下文章

一天一坑系列SpringCloud微服务项目本地可以正常启动,但在Flink中却无法启动,莫名其妙????

一天一坑系列Springboot中AOP拦截不到指定路径的方法,拦截器失效

一天一坑系列Mysql数据库表莫名其妙插入了重复数据,如何一招妙手回春

一天一坑系列Mysql数据库表莫名其妙插入了重复数据,如何一招妙手回春

一天一坑系列手动提交事务,开启后未关闭导致的bug!啊,多么痛的领悟...MySQLTransactionRollbackException: Lock wait timeout exceeded

KendoUI坑系列之 ng-include 上ng-controller 无法获取控件