SpringMVC访问某接口导致controller中的方法死循环被调用

问题重现

问题代码
Contoller中的方法

@Controller
@RequestMapping (path = "/api/student")
public class StudentController {
	@Autowired
    private StudentService studentService;
    
    @RequestMapping (path = "/no/{no}")
    public Result queryStudent(@PathVariable(value = "no") String no) {
        System.out.println("按学号查询" + no);
        List<Student> studentList = studentService.findByStudentNo(no);
        if (studentList != null) {
            return ResultUtil.success(studentList);
        } else {
            return ResultUtil.error(ResultCode.STUDENT_QUERY_ERROR_UNKNOWN, "未知错误");
        }
    }
}

我想用PathVariable实现按学号查询的功能,只要访问类似http://localhost:8080/TrainingProject/api/student/no/202020202020这样的路径时,spring会帮我们把路径中指定部分内容转换成方法中的参数,但是当我访问的时候总是很久没响应。
添加控制台输出语句后发现,只要我访问这个路径,queryStudent方法就不断被调用。如果在postman中测试该接口,会在一段时间后返回错误代码500(服务器异常)。同时服务器也给我打印了1.3G大小的日志文件。。
在这里插入图片描述
控制台输出:
在这里插入图片描述
Postman:
在这里插入图片描述
从异常堆栈信息上,我们能够看到堆栈溢出,但是这对解决问题起不了什么帮助

解决办法

在方法上加@ResponseBody注解。。。
别问,问就是我憨憨。。。忘记加@ResponseBody注解居然会出这么严重的bug
正确代码

@Controller
@RequestMapping (path = "/api/student")
public class StudentController {
	@Autowired
    private StudentService studentService;
    
    @ResponseBody
    @RequestMapping (path = "/no/{no}")
    public Result queryStudent(@PathVariable(value = "no") String no) {
        System.out.println("按学号查询" + no);
        List<Student> studentList = studentService.findByStudentNo(no);
        if (studentList != null) {
            return ResultUtil.success(studentList);
        } else {
            return ResultUtil.error(ResultCode.STUDENT_QUERY_ERROR_UNKNOWN, "未知错误");
        }
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值