lombok使用(Lombok介绍和配置)
什么是Lombok
Lombok是一个Java库 ,能自动插入编辑器并构建工具 ,简化Java开发 。
官网: https://www.projectlombok.org/
Lombok的作用
通过 添加注解 的方式,Lombok能以简单的注解形式来简化java代码 ,提高开发人员的开发效率 。
例如开发中经常需要写的javabean ,都需要花时间去添加相应的getter/setter ,也许还要去写构造器 、equals等方法 ,而且需要维护 ,当属性多时会出现大量的getter/setter方法 ,这些显得很冗长也没有太多技术含量 ,一旦修改属性 ,就容易出现忘记修改对应方法的失误,使代码看起来更简洁些。
Lombok的配置
使用Lombok 有两个工作要做:
安装idea的插件
在项目里面添加 lombok的依赖 。
添加maven依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> <scope>provided</scope> </dependency>安装插件
使用Lombok还需要插件的配合 ,使用开发工具为idea. 打开idea的设置,点击Plugins ,点击Browse repositories ,在弹出的窗口中搜索lombok,然后安装即可
解决编译时出错问题
编译时出错 ,可能是没有enable注解处理器 。Annotation Processors > Enable annotation processing 。设置完成之后程序正常运行 。
总结
Lombok: 就是一个工具, 简化java代码开发
Lombok环境
添加坐标
添加插件
Lombok的常用注解
@Data @Getter/@Setter @ToString @NoArgsConstructor 、@AllArgsConstructor@Data:@Data注解在类上 ,会为类的所有属性自动生成setter/getter 、equals 、canEqual 、hashCode 、toString方法,如为final属性 ,则不会为该属性生成setter方法 。
@Data public class User implements Serializable{ private Integer id; private String username; private String password; private String address; private String nickname; private String gender; private String email; private String status; }@Getter/@Setter:如果觉得@Data太过残暴不够精细 ,可以使用@Getter/@Setter注解 ,此注解在属性上 ,可以为相应的属性自动生成Getter/Setter方法.
public class User implements Serializable{ @Setter @Getter private Integer id; private String username; private String password; private String address; private String nickname; private String gender; private String email; private String status; }@ToString:类使用@ToString注解 ,Lombok会生成一个toString()方法 ,默认情况下 ,会输出类名 、所有属性(会按照属性定义顺序) ,用逗号来分割 。 通过exclude属性指定忽略字段不输出,
@ToString(exclude = {"id"}) public class User implements Serializable{ private Integer id; private String username; private String password; private String address; private String nickname; private String gender; private String email; private String status; }@xxxConstructor
@NoArgsConstructor: 无参构造器
@NoArgsConstructor public class User implements Serializable{ private Integer id; private String username; private String password; private String address; private String nickname; private String gender; private String email; private String status; }@AllArgsConstructor: 全参构造器
@AllArgsConstructor public class User implements Serializable{ private Integer id; private String username; private String password; private String address; private String nickname; private String gender; private String email; private String status; }**总结**
@Data:用在类上面的 , 生成set,get, toString, hashCode,canEqual 、equals方法
@Getter:用在字段, 生成get方法
@Setter:用在字段, 生成set方法
@ToString:用在类上面的 生成toString方法
@xxxConstructor:用在类上面的 生成构造方法 (只能生成无参和全参的构造方法)
优点:
能通过注解的形式自动生成构造器 、getter/setter、equals 、hashcode 、toString等方法 ,提高了一定的开发效率
让代码变得简洁,不用过多的去关注相应的方法
属性做修改时 ,也简化了维护为这些属性所生成的getter/setter方法等
缺点:
不支持多种参数构造器的重载 , 要不就是无参 ,要不就是全参 , 如果希望做成只有一个参数、或者几个参数的构造函数 ,需要自己手动添加 。
虽然省去了手动创建getter/setter方法的麻烦 ,但大大降低了源代码的可读性和完整性,降低了阅读代码的舒适度
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!