JAVA编程技巧(二)

二、利用注解

2.1. 利用 Lombok 注解

Lombok 提供了一组有用的注解,可以用来消除 Java 类中的大量样板代码。

普通:

public class UserVO {
   private Long id;
   private String name;
   public Long getId() {
       return this.id;
  }
   public void setId(Long id) {
       this.id = id;
  }
   public String getName() {
       return this.name;
  }
   public void setName(String name) {
       this.name = name;
  }
   ...
}

精简:

@Getter
@Setter
@ToString
public class UserVO {
   private Long id;
   private String name;
  ...
}

2.2. 利用 Validation 注解

普通:

@Getter
@Setter
@ToString
public class UserCreateVO {
   @NotBlank(message = "用户名称不能为空")
   private String name;
   @NotNull(message = "公司标识不能为空")
   private Long companyId;
  ...
}
@Service
@Validated
public class UserService {
   public Long createUser(@Valid UserCreateVO create) {
       // TODO: 创建用户
       return null;
  }
}

精简:

@Getter
@Setter
@ToString
public class UserCreateVO {
   @NotBlank(message = "用户名称不能为空")
   private String name;
   @NotNull(message = "公司标识不能为空")
   private Long companyId;
  ...
}
@Service
@Validated
public class UserService {
   public Long createUser(@Valid UserCreateVO create) {
       // TODO: 创建用户
       return null;
  }
}

2.3. 利用 @NonNull 注解

Spring 的 @NonNull 注解,用于标注参数或返回值非空,适用于项目内部团队协作。只要实现方和调用方遵循规范,可以避免不必要的空值判断,这充分体现了阿里的“新六脉神剑”提倡的“因为信任,所以简单”。

普通:

public List<UserVO> queryCompanyUser(Long companyId) {
   // 检查公司标识
   if (companyId == null) {
       return null;
  }
   // 查询返回用户
   List<UserDO> userList = userDAO.queryByCompanyId(companyId);
   return userList.stream().map(this::transUser).collect(Collectors.toList());
}
Long companyId = 1L;List<UserVO> userList = queryCompanyUser(companyId);
if (CollectionUtils.isNotEmpty(userList)) {
   for (UserVO user : userList) {
       // TODO: 处理公司用户
  }
}

精简:

public @NonNull List<UserVO> queryCompanyUser(@NonNull Long companyId) {
   List<UserDO> userList = userDAO.queryByCompanyId(companyId);
   return userList.stream().map(this::transUser).collect(Collectors.toList());
}
Long companyId = 1L;List<UserVO> userList = queryCompanyUser(companyId);
for (UserVO user : userList) {
   // TODO: 处理公司用户
}

2.4. 利用注解特性

注解有以下特性可用于精简注解声明:

1、当注解属性值跟默认值一致时,可以删除该属性赋值;

2、当注解只有 value 属性时,可以去掉 value 进行简写;

3、当注解属性组合等于另一个特定注解时,直接采用该特定注解。

普通:

@Lazy(true);
@Service(value = "userService")
@RequestMapping(path = "/getUser", method = RequestMethod.GET)

精简:

@Lazy
@Service("userService")
@GetMapping("/getUser")
正文完
 0
admin
版权声明:本站原创文章,由 admin 于2015-12-11发表,共计2068字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处:https://www.mlzj.net。