You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中Post请求添加用户出现500内部服务器错误排查

问题分析与解决方案

核心问题:不可变列表导致添加失败

在UserServiceImpl中,你通过List.of()初始化了userList:

List<User> userList = List.of(
        new User(1311, "Vaibhav Shrivastava", "innomightmail@gmail.com"),
        new User(1312, "Varun Shrivastava", "varun@gmail.com"),
        new User(1313, "Rajesh Shrivastava", "rajesh@gmail.com")
    );

List.of()返回的是不可变列表,调用add()方法会直接抛出UnsupportedOperationException,这就是POST请求返回500错误的根本原因。

修复步骤

  1. 替换为可变列表实现
    将userList的初始化改为使用可变列表(如ArrayList),保留原有初始化数据:
List<User> userList = new ArrayList<>(List.of(
        new User(1311, "Vaibhav Shrivastava", "innomightmail@gmail.com"),
        new User(1312, "Varun Shrivastava", "varun@gmail.com"),
        new User(1313, "Rajesh Shrivastava", "rajesh@gmail.com")
    ));

修改后即可正常调用add()方法添加新用户。

  1. 清理服务接口冗余泛型
    UserService中的addUser和deleteUser方法的<T>泛型无意义,直接修改为明确返回类型:
@Service
public interface UserService {
    User getUser(Integer userId);
    List<User> getAllUsers();
    ResponseEntity<?> deleteUser(Integer userId);
    ResponseEntity<User> addUser(User user);
}

同步修改实现类的返回逻辑,同时把状态码改为符合REST规范的HttpStatus.CREATED:

@Override
public ResponseEntity<User> addUser(User user) {
    userList.add(user);
    return new ResponseEntity<>(user, HttpStatus.CREATED);
}
  1. 优化控制器异常处理
    当前控制器的异常处理逻辑重复且无日志,建议调整为:
@PostMapping("/add-user")
public ResponseEntity<Object> addUser(@RequestBody User user) {
    try {
        User newUser = new User(user.getUserId(), user.getName(), user.getEmail());
        this.userService.addUser(newUser);
        return new ResponseEntity<>(newUser, HttpStatus.CREATED);
    } catch (Exception e) {
        e.printStackTrace(); // 打印异常日志便于排查
        return new ResponseEntity<>("添加用户失败:" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

额外排查点

你提到返回的用户对象名称和邮箱变为"Kavita Shrivastava"和"kavita@gmail.com",需检查User类的构造方法参数顺序是否与传入字段匹配,确保构造方法为:

public User(Integer userId, String name, String email) {
    this.userId = userId;
    this.name = name;
    this.email = email;
}

内容的提问来源于stack exchange,提问作者Innomight

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:01:51