Hi!欢迎光临陕西省的权威思科、华为、Oracle、红帽、深信服、微软认证培训中心!
| 029-88235527
您现在所在位置:首页 > 新闻资讯 > 最新资讯 >

Java 代码精简之利用注解

发布日期:2020-05-10 14:17:17点击次数:

分享到:
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资格认证。