Spring Boot未配置根路径却与/index返回相同视图问题排查
问题根因
该现象由Spring Boot内置的欢迎页自动映射特性触发,和你自行编写的/index接口映射无关:
- Spring Boot 2.x版本默认开启欢迎页自动配置,会自动扫描两类路径下的
index.html文件:- 静态资源目录(默认
classpath:/static/、classpath:/public/等) - 模板引擎的模板存放目录(Thymeleaf默认路径为
classpath:/templates/)
- 静态资源目录(默认
- 只要在上述路径中找到
index.html,Spring Boot会自动将应用根路径/的GET请求绑定到该页面,无需额外编写Controller映射 - 你当前访问
/返回的页面和访问/index返回的页面只是刚好都是index.html,二者的触发逻辑完全独立:前者走的是Spring Boot默认欢迎页逻辑,后者走的是你自行编写的Controller映射逻辑
验证方法
你可以将Controller中@GetMapping("/index")的配置注释后重启项目,会发现:
- 访问
http://localhost:8080依然可以正常返回index.html - 访问
http://localhost:8080/index会返回404错误页
该结果可以直接验证上述逻辑的正确性。
关闭默认欢迎页映射的方法
如果不需要该默认特性,可以在application.properties/application.yml中添加如下配置关闭:
spring.web.welcome-page.enabled=false
配置生效后访问根路径/就会按照你的预期返回Whitelabel Error Page。
内容的提问来源于stack exchange,提问作者Ajay Kumar
相关产品推荐
相关产品推荐

