@RestController与@Controller注解使用错误
今天在消费者调用服务端业务时出现404错误信息。
排查问题时发现,消费者正常对服务端发起了调用信息,服务端也接受到了调用信息,并返回了结果,但是消费者却没有收到返回的结果,所以报404错误。只在消费者这边报了404错误
那么这个时候问题是在服务端还是在消费者这边呢,首先我检查了两者的配置文件,以及服务注册情况,发现都正常,而消费者这边除了404的错误也没其他的错误信息。所以我认为还是服务端的问题。
一开始服务端没有加日志信息,所以在调用时控制台只有少量的输出信息,没有具体的运行日志,那么加上日志。然后再次让消费者发起调用。
@PostMapping("/selectUserCode") public SysUserBean selectUserCode(@RequestParam("userCode") String userCode){ SysUserBean sysUserBean=userBeanMapper.selectUserCode(userCode); return sysUserBean; }
在调用对服务端控制台中输出的日志信息逐条查看,还是没发现问题。
这就难道我了,网上各种找资料尝试都不行,然后我就想直接返回一个字符串试试。
@PostMapping("/selectUserCode") public String selectUserCode(@RequestParam("userCode") String userCode){ SysUserBean sysUserBean=userBeanMapper.selectUserCode(userCode); return "qwwqweqweqew"; }
这个时候在调用,终于有错误信息了,DispatcherServlet这个系列下出现404,这不是一般在找不到页面才出现的吗,怎么会在这里出现,然后我将代码拉到最上面发现,我使用了@Controller这个注解,这下问题就明白了,在直接使用@Controller时,如果没做其他申明或配置,在返回结果时就会查找项目中的页面,返回页面数据。
然后我将@Controller换成@RestController这个时问题解决了,用错注解自己玩自己