加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

腾讯事变近十年大佬:不是我冲击你!你也许真的不会写Java

发布时间:2019-07-02 01:44:01 所属栏目:建站 来源:程序员小姐
导读:文章焦点 着实,本不想把问题写的那么可怕,只是发明许多人干了几年 Java 往后,都自以为是一个不错的 Java 措施员了,可以拿着上万的人为都处鼓吹本身了,写这篇文章的目标并不是冷笑和我一样做 Java 的偕行们,只是但愿读者看到此篇文章后,可以和我一样

再以上班的 API 实例举办声名,我们此刻对 DTO 数据举办搜查:

  1. public class UserDTO { 
  2.  @NotNull 
  3.  private String username; 
  4.  @NotNull 
  5.  private int age; 
  6.  //其他代码略 

API 验证:

  1. @PostMapping 
  2.  public UserDTO addUser(@Valid UserDTO userDTO){ 
  3.  User user = userDTO.convertToUser(); 
  4.  User saveResultUser = userService.addUser(user); 
  5.  UserDTO result = userDTO.convertFor(saveResultUser); 
  6.  return result; 
  7.  } 

我们必要将验证功效传给前端,这种非常应该转化为一个 api 非常(带有错误码的非常)。

  1. @PostMapping 
  2. public UserDTO addUser(@Valid UserDTO userDTO, BindingResult bindingResult){ 
  3.  checkDTOParams(bindingResult); 
  4.  User user = userDTO.convertToUser(); 
  5.  User saveResultUser = userService.addUser(user); 
  6.  UserDTO result = userDTO.convertFor(saveResultUser); 
  7.  return result; 
  8. private void checkDTOParams(BindingResult bindingResult){ 
  9.  if(bindingResult.hasErrors()){ 
  10.  //throw new 带验证码的验证错误非常 
  11.  } 

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 的存在,所觉得了让读者更好的进修,我乐意写这样一个例子:

  1. @Setter 
  2. @Getter 
  3. public class UserDTO { 
  4.  @NotNull 
  5.  private String username; 
  6.  @NotNull 
  7.  private int age; 
  8.  public User convertToUser(){ 
  9.  UserDTOConvert userDTOConvert = new UserDTOConvert(); 
  10.  User convert = userDTOConvert.convert(this); 
  11.  return convert; 
  12.  } 
  13.  public UserDTO convertFor(User user){ 
  14.  UserDTOConvert userDTOConvert = new UserDTOConvert(); 
  15.  UserDTO convert = userDTOConvert.reverse().convert(user); 
  16.  return convert; 
  17.  } 
  18.  private static class UserDTOConvert extends Converter<UserDTO, User> { 
  19.  @Override 
  20.  protected User doForward(UserDTO userDTO) { 
  21.  User user = new User(); 
  22.  BeanUtils.copyProperties(userDTO,user); 
  23.  return user; 
  24.  } 
  25.  @Override 
  26.  protected UserDTO doBackward(User user) { 
  27.  throw new AssertionError("不支持逆向转化要领!"); 
  28.  } 
  29.  } 

看到了吧,烦人的 Getter 和 Setter 要领已经去掉了。

可是上边的例子基础不敷以浮现 lombok 的强盛。我但愿写一些网上很难查到,可能很少人举办声名的 lombok 的行使以及在行使时措施语义上的声名。

好比:@Data,@AllArgsConstructor,@NoArgsConstructor..这些我就不举办逐一声名白,请各人自行查询资料。

bean 中的链式气魄威风凛凛

什么是链式气魄威风凛凛?我来举个例子,看下面这个 Student 的 bean:

  1. public class Student { 
  2.  private String name; 
  3.  private int age; 
  4.  public String getName() { 
  5.  return name; 
  6.  } 
  7.  public Student setName(String name) { 
  8.  this.name = name; 
  9.  return this; 
  10.  } 
  11.  public int getAge() { 
  12.  return age; 
  13.  } 
  14.  public Student setAge(int age) { 
  15.  return this; 
  16.  } 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读