| 再以上班的 API 实例进行说明,我们现在对 DTO 数据进行检查: public class UserDTO {  @NotNull  private String username;  @NotNull  private int age;  //其他代码略 } 
 API 验证: @PostMapping  public UserDTO addUser(@Valid UserDTO userDTO){  User user = userDTO.convertToUser();  User saveResultUser = userService.addUser(user);  UserDTO result = userDTO.convertFor(saveResultUser);  return result;  } 
 我们需要将验证结果传给前端,这种异常应该转化为一个 api 异常(带有错误码的异常)。 @PostMapping public UserDTO addUser(@Valid UserDTO userDTO, BindingResult bindingResult){  checkDTOParams(bindingResult);  User user = userDTO.convertToUser();  User saveResultUser = userService.addUser(user);  UserDTO result = userDTO.convertFor(saveResultUser);  return result; } private void checkDTOParams(BindingResult bindingResult){  if(bindingResult.hasErrors()){  //throw new 带验证码的验证错误异常  } } 
 BindingResult 是 Spring MVC 验证 DTO 后的一个结果集,可以参考spring  官方文档(http://spring.io/)。 检查参数后,可以抛出一个“带验证码的验证错误异常”,具体异常设计可以参考如何优雅的设计 Java  异常(http://lrwinx.github.io/2016/04/28/%E5%A6%82%E4%BD%95%E4%BC%98%E9%9B%85%E7%9A%84%E8%AE%BE%E8%AE%A1java%E5%BC%82%E5%B8%B8/)。 拥抱 lombok 上边的 DTO 代码,已经让我看的很累了,我相信读者也是一样,看到那么多的 Getter 和 Setter  方法,太烦躁了,那时候有什么方法可以简化这些呢。 请拥抱 lombok,它会帮助我们解决一些让我们很烦躁的问题 去掉 Setter 和 Getter 其实这个标题,我不太想说,因为网上太多,但是因为很多人告诉我,他们根本就不知道 lombok  的存在,所以为了让读者更好的学习,我愿意写这样一个例子: @Setter @Getter public class UserDTO {  @NotNull  private String username;  @NotNull  private int age;  public User convertToUser(){  UserDTOConvert userDTOConvert = new UserDTOConvert();  User convert = userDTOConvert.convert(this);  return convert;  }  public UserDTO convertFor(User user){  UserDTOConvert userDTOConvert = new UserDTOConvert();  UserDTO convert = userDTOConvert.reverse().convert(user);  return convert;  }  private static class UserDTOConvert extends Converter<UserDTO, User> {  @Override  protected User doForward(UserDTO userDTO) {  User user = new User();  BeanUtils.copyProperties(userDTO,user);  return user;  }  @Override  protected UserDTO doBackward(User user) {  throw new AssertionError("不支持逆向转化方法!");  }  } } 
 看到了吧,烦人的 Getter 和 Setter 方法已经去掉了。 但是上边的例子根本不足以体现 lombok 的强大。我希望写一些网上很难查到,或者很少人进行说明的 lombok  的使用以及在使用时程序语义上的说明。 比如:@Data,@AllArgsConstructor,@NoArgsConstructor..这些我就不进行一一说明了,请大家自行查询资料。 bean 中的链式风格 什么是链式风格?我来举个例子,看下面这个 Student 的 bean: public class Student {  private String name;  private int age;  public String getName() {  return name;  }  public Student setName(String name) {  this.name = name;  return this;  }  public int getAge() {  return age;  }  public Student setAge(int age) {  return this;  } } 
 (编辑:鹰潭站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |