问题背景:最近架构一个新项目,在本地开发测试正常,但是测试环境docker一部署,定时任务也能正常运行,但就是controller接口访问404,各种常规问题都找了死活儿不行。
以下是按着正常的思路去排查的:(以下各种 嫌疑都可能找到问题解决方案,供您参考)
嫌疑1:application启动类相对路径是不是不对,经排查没问题
嫌疑2:测试服务器日志是否有错误日志,经排查正常
嫌疑3:升级tomcat版本,是否由于tomcat内置的servlet-api版本过低或者过高导致?更换后也不行
嫌疑4:pom文件是否存在版本冲突导致,经排查无冲突
嫌疑4:dispatcherServlet没有起作用,定时任务是正常运行的,说明服务是启动正常的,但是为什么接口访问404呢,有一种可能是dispatcherServlet这家伙没有正常工作,没有正常工作还有两种可能,一种是版本冲突了,另一种是懒加载了。如果是版本冲突 会在日志中有体现,报class not found或者找不到响应方法,但是都没有发现,那就有可能没有实时加载。
在application.properties文件中 追加
spring.mvc.servlet.load-on-startup=1 这个配置项,然后启动项目,启动成功
最后要说的是,为什么会存在这个问题呢?求赐教