可以使用 DTO (Data Transfer Object) 来解决这个问题。

DTO 是一种数据传输对象,它是一个简单的 Java 类,用于在 controller 和 service 之间传输数据。在 controller 中,根据请求参数创建 DTO 对象,然后将 DTO 对象传递给 service 方法。在 service 中,DTO 对象可以被映射成 service 方法需要的对象。

例如,假设有一个用户注册的功能,用户需要提供以下信息:用户名、密码、电子邮件地址。在 controller 中,可以创建一个名为 UserRegistrationDTO 的类,它包含这些信息:

public class UserRegistrationDTO {
    private String username;
    private String password;
    private String email;
    
    // getters and setters
}

然后,在 controller 中,可以根据请求参数创建一个 UserRegistrationDTO 对象,并将其传递给 service 方法:

@PostMapping("/register")
public ResponseEntity<?> registerUser(@RequestBody UserRegistrationDTO userRegistrationDTO) {
    userService.registerUser(userRegistrationDTO);
    return ResponseEntity.ok().build();
}

在 service 中,可以编写一个名为 registerUser 的方法,它接受一个 UserRegistrationDTO 对象,并将其映射成 User 对象:

public void registerUser(UserRegistrationDTO userRegistrationDTO) {
    User user = new User();
    user.setUsername(userRegistrationDTO.getUsername());
    user.setPassword(userRegistrationDTO.getPassword());
    user.setEmail(userRegistrationDTO.getEmail());
    
    // save user to database
}

这种方式可以避免冗余的请求体,同时可以将请求参数转换成 service 方法需要的对象。

Java Controller 调用同一个 Service 方法,处理不同参数的最佳实践

原文地址: https://www.cveoy.top/t/topic/mUM5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录