Spring Boot调用Controller的Get方法返回404错误排查求助
问题排查与解决方案
1 核心注解使用错误
你在控制类上使用了@RestController注解,该注解等价于@Controller + @ResponseBody,会将所有方法的返回值直接作为HTTP响应体输出,不会被视图解析器解析为模板路径。你当前需要返回index视图,需要将注解替换为@Controller:
import org.springframework.stereotype.Controller; @Controller // 替换原有@RestController public class Controlador { // 原有逻辑保持不变 }
2 组件扫描范围校验
@SpringBootApplication默认只会扫描启动类所在包及其子包下的组件:
- 如果你的启动类
ProjectAlejandroSeguridadItApplication不在com.alejandrocode.demo包下,需要手动指定扫描范围:
@SpringBootApplication(scanBasePackages = "com.alejandrocode.demo") public class ProjectAlejandroSeguridadItApplication { // 原有逻辑保持不变 }
3 其他排查点
- 检查
application.properties/application.yml配置:- 确认
server.servlet.context-path是否配置了上下文路径,若配置了需要在访问路径前加上该前缀,比如配置了/demo,访问路径应为http://localhost:8080/demo/obtenerPersonas - 确认
server.port配置的端口和你访问的端口一致,默认端口为8080
- 确认
- 确认
resources/templates目录下存在index.html模板文件,否则视图解析时会返回404 - 持久层返回值适配:
CrudRepository.findAll()返回的是Iterable类型,直接强转为List可能抛出类型转换异常,建议将IPersona接口改为继承JpaRepository<Persona,Integer>,其findAll()方法原生返回List<Persona>类型
内容的提问来源于stack exchange,提问作者Alejandro Martin
相关产品推荐
相关产品推荐

