刚学Spring Boot的小白们,非常容易遇到404路径无效的问题。有人就会说明明我是按照教程来的,明明我的路径是对的,为什么还是404,要记住程序不会骗人的。出错了咱就去解决。下面就小白在开发过程中,看看那些会造成404问题吧。
严格检查路径各个单词的拼写
很多人在写请求url的时候,由于自己的粗心大意,就很容易把路径的写单词写错,比如http:localhost:8080/sys/login写成http:localhost:8080/sys/loign等。有人怀疑了配置,怀疑了依赖,甚至还去清缓存。就没是没发现原来是单词写错了。
忘记加注解
想要方法能够被访问,需要在控制器(一般是命名为Controller的类)加上@RestController和对应的方法加入对应的Mapping注解。示例如下:
@RestController
public class MainController {
@Autowired
TestService testService;
@PostMapping("/test")
@ResponseBody
public String test(){
testService.test();
return null;
}
}
控制器路径错误
控制器Controller类需要和启动类同一根目录才能被springboot自动扫描到。如果不是在同一根目录,这则需要在启动加入@ComponentScan注解,指定Controller类所在的包路径,出现这问题就是在创建项目中,自己创建包,文件的时候没有注意路径问题。一般在实际开发中,启动类和controller类是在同一根路径下。
静态资源的访问
静态资源放的位置默认是的src/main/resources/static
或 public。
如果需要更改,则需要在配置文件配置对应的路径。比如在application.properties文件中增加如下配置。
spring.resources.static-locations=file:/opt/static/
访问格式
Spring Boot调用方法的访问格式一般是:ip+端口+server.servlet.context-paht+控制器路径+方法路径。比如下图的访问路径是:localhost:8080/sys/test。端口和server.servlet.context-paht都可以在配置文件找到。
@RestController
@RequestMapping("sys")
public class MainController {
@Autowired
TestService testService;
@PostMapping("/test")
@ResponseBody
public String test(){
testService.test();
return null;
}
}
总结
404问题其实很好解决的。多遇到几次,总结一下就很容已发现问题。如果你去了解Spring Boot的源码,你就会了解控制器是如何工作的。这样在开发的过程中无论出现什么样404的问题,你都手到擒来。当然,如果出现正式环境404的问题,就要考虑服务器端口是否开放,服务转发是否正常等各种问题,排查思路和开发的排查思路完全不一样。
最后祝大家永远不会404