将API控制器中的业务逻辑移动到服务层或业务逻辑层中。这样可以避免API控制器被过多的业务逻辑所耦合,降低代码复杂度并增加代码的可维护性和可测试性。
示例:
// API控制器中的代码 @RestController public class UserController { @Autowired private UserService userService;
@PostMapping("/user")
public ResponseEntity createUser(@RequestBody UserDto userDto) {
// 验证用户输入
if (StringUtils.isEmpty(userDto.getUsername()) || StringUtils.isEmpty(userDto.getPassword())) {
return ResponseEntity.badRequest().build();
}
// 新建用户
User user = new User();
user.setUsername(userDto.getUsername());
user.setPassword(userDto.getPassword());
// 调用服务层创建用户
boolean result = userService.createUser(user);
if (result) {
return ResponseEntity.ok().build();
} else {
return ResponseEntity.internalServerError().build();
}
}
}
// 服务层中的代码 @Service public class UserService { @Autowired private UserDao userDao;
public boolean createUser(User user) {
// 验证用户信息
if (StringUtils.isEmpty(user.getUsername()) || StringUtils.isEmpty(user.getPassword()) {
return false;
}
// 创建用户
userDao.createUser(user);
return true;
}
}