Spring Boot中Post、Get请求返回空响应问题排查求助
排查Spring Boot接口空响应问题
1. 确认Lombok注解是否生效
你的Product类使用了@Data注解,但如果Lombok未正确配置,不会自动生成getter/setter方法,Spring MVC序列化对象时无法读取属性,就会返回{}空响应。
验证与解决:
- 检查IDE是否安装Lombok插件(IntelliJ IDEA需在Plugins市场安装,Eclipse同理)。
- 确认pom.xml/build.gradle中Lombok依赖正确引入:
<!-- Maven依赖示例 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> - 编译项目后查看
Product的class文件,确认是否生成了getter/setter方法,若未生成则重启IDE重新编译。
2. 修正主键生成策略
@GeneratedValue未指定策略时,MySQL环境下默认策略可能不生效,导致数据无法正常插入数据库,进而出现Get请求返回空列表、Post请求返回空对象的情况。
修改Product类的id字段:
import javax.persistence.GenerationType; // ...其他注解 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // 指定MySQL自增策略 private int id;
3. 检查数据库连接有效性
确认MySQL服务正常运行,test数据库已创建,application.properties中的用户名、密码、端口无误:
- 查看项目启动日志,排查是否有数据库连接失败的报错。
- 用MySQL客户端手动连接
jdbc:mysql://localhost:3306/test,验证账号密码能否正常访问。 - 检查
spring.jpa.hibernate.ddl-auto=create是否生效:启动项目后查看test库中是否生成了PRODUCT_TBL表,未生成则说明数据库连接配置有误。
4. 规范Post请求格式
发送/addProduct请求时需满足:
- 请求头
Content-Type设置为application/json。 - 请求体字段名与
Product类属性完全一致(大小写敏感),示例请求体:{ "name": "测试商品", "quantity": 10, "price": 99.9 }
字段名错误会导致Spring无法绑定参数,保存的对象属性为空,响应自然为空。
5. 验证数据保存状态
在ProductService的saveProduct方法中添加打印逻辑,确认数据是否真的被正确保存:
public Product saveProduct(Product product) { Product saved = repository.save(product); System.out.println("保存后的商品:" + saved); return saved; }
如果打印的对象属性为空,说明参数绑定有问题;如果打印正常但响应为空,回到Lombok注解生效问题排查。
内容的提问来源于stack exchange,提问作者RDX
相关产品推荐
相关产品推荐

