说明:Demo_mmall v2.0 开头的文章是学习慕课网Geely老师的电商项目V2.0版本时对知识点进行总结的文章。
1 Lombok是什么?
Lombok这个东西工作中用到过,很简单没去理会在学习此DEMO时遇到了就顺手总结下吧。Lombok是一个小插件(小jar包?无所谓,就是一个小东西)封装了一些东西允许我们可以通过简单注释来精简代码,达到消除冗长代码的目的。
2 Lombok怎么安装?
以IDEA,Maven项目为例:
1 要先在pom文件里引入jar包:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</dependency>
2 装下插件:
前戏做好后接下来就可以玩耍了:
3 Lombok怎么使用?
之前说了,lombok是通过加入注解来发挥作用的,下面列举常用的注解:
注解名 | 用法 |
---|---|
@Data | @Data = @Getter + @Setter + @ToString + @EqualsAndHashCode |
@Getter | 生成对象的get方法 |
@Setter | 生成对象的Set方法 |
@ToString | 重写ToString方法 |
@NoArgsConstructor | 生成不加参数的构造器 |
@AllArgsConstructor | 生成加所有属性的构造器 |
@EqualsAndHashCode | 重写equals()和hashCode() |
@Slf4j | 4不读数字4,读英文“four”,代替logback日志框架新建log对象 |
@Log4j | 代替log4j日志框架新建log对象 |
解释下,哎,也没什么解释的。Lombok的设计者把这个小东西设计得我们拿来就用完全不要看文档。
Lombok使得我们以后不用source下去手动生成get,set,toString方法,越来越自动化。
还需要说一点,@ToString 和@EqualsAndHashCode注解可以指定哪些属性,举个例子:
@ToString(of = {"id", "userId", "productId"})
public class Cart {
private Integer id;
private Integer userId;
private Integer productId;
private Integer quantity;
private Integer checked;
private Date createTime;
private Date updateTime;
}
该类编译后通过反编译jd工具我们可以看到:
of里放的数组是要toString的;
再看:
@ToString(exclude = {"id", "userId", "productId"})
public class Cart {
private Integer id;
private Integer userId;
private Integer productId;
private Integer quantity;
private Integer checked;
private Date createTime;
private Date updateTime;
}
反编译:
public String toString()
{
return "Cart(quantity=" + getQuantity() + ", checked=" + getChecked() + ", createTime=" + getCreateTime() + ", updateTime=" + getUpdateTime() + ")";
}
exclude 里放的是不要ToString的。
of和exclude同样适用于@EqualsAndHashCode注解
工作中一直没注意到为什么直接写log.info(XXX)就可以,原来就是用了这个小东西。
前辈们封装了太多的东西供我们适用,提高了工作开发效率的同时也使得我们越来越不想去了解实现原理,毕竟,谁不喜欢抄作业呢。
可你想自己写作业,就得知道这些。