Spring Boot控制器已触发却返回404状态码问题求助
问题分析与解决方案
嘿,我一眼就看出问题所在啦!
你遇到的404问题,核心原因是**@Controller注解的默认行为**:当你用@Controller时,Spring会把方法返回的字符串当作视图名称去查找对应的视图模板(比如JSP、Thymeleaf页面),但你根本没配置名为Hello, you!的视图,所以自然返回404。而你真正想要的是把字符串直接作为HTTP响应体返回给客户端对吧?
给你两种简单的解决办法:
方法一:改用@RestController注解
@RestController是Spring专门为RESTful接口设计的注解,它等价于@Controller + @ResponseBody,会自动把方法返回的内容转换成响应体,不需要额外配置视图。修改后的控制器代码如下:
@RestController public class MessageRequestController { @RequestMapping(method = RequestMethod.GET, value = "/hello", produces = "application/json") public String hello() { System.out.println("Hit me!"); return "Hello, you!"; } }
方法二:给方法添加@ResponseBody注解
如果你不想替换@Controller注解,只需要在hello()方法上加上@ResponseBody,就能让方法返回的字符串直接作为响应体输出:
@Controller public class MessageRequestController { @RequestMapping(method = RequestMethod.GET, value = "/hello", produces = "application/json") @ResponseBody public String hello() { System.out.println("Hit me!"); return "Hello, you!"; } }
另外补充一句:从控制台能打印Hit me!来看,你的控制器已经被Spring正确扫描到了,所以启动类的@ComponentScan配置是没问题的,不用调整~
内容的提问来源于stack exchange,提问作者wesleyy
相关产品推荐
相关产品推荐

