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@ToStringpublic class UserCreateVO {
@NotBlank(message = "用户名称不能为空")
private String name;
@NotNull(message = "公司标识不能为空")
private Long companyId;
...
}
@Service@Validatedpublic 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")
西安鸥鹏是西安当地为数不多获取民办办学许可证的合法机构;西安鸥鹏IT教育多年专注C++、 Java、Oracle、 HUAWEI华为、思科Cisco、 Linux、python、信息安全、大数据、云计算网络等IT各个领域。学员可以选择最适合自己的课程,而不会因为培训中心只经营单一课程,而被误导学习了并非适合自己的课程,浪费经济和时间成本,影响自己的职业生涯发展。鸥鹏IT几乎为所有IT巨头权威相关知名IT企业CISCO、MICROSOFT、REDHAT、华为、ORACLE授权培训机构,同时是PROMETRIC和VUE授权的相关考试中心,可以组织学员参加认证考试并获得IT资格认证。