标签:art opener hub its 场景 工具 logger 简化 new
我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,当要增加属性或者对某个属性进行改变时,比如命名、类型等,都需要重新去生成上面提到的这些方法。这样重复的劳动没有任何意义,Lombok里面的注解可以轻松解决这些问题。
Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。
官方地址:https://projectlombok.org/
github地址:https://github.com/rzwitserloot/lombok
这里简单说下
lombok
实现的原理:主要是通过抽象语法树(AST)
,在编译处理后,匹配到有其注解的类,那么注解编译器就会自动去匹配项目中的注解对应到在lombok语法树中的注解文件,并经过自动编译匹配来生成对应类中的getter或者setter方法,达到简化代码的目的。
利用此原理,也可自行编写一些工作中一些经常使用到的,比如实体类转Map对象,map对象转实体类,原本使用Beanutils
或者cglib的BeanCopier
实现转换,前者使用的是反射的机制,所以性能相对较差,后者是使用修改字节码技术,性能在未使用Converter
时基本等同于set
和get
方法。但说白了还是麻烦,毕竟还需要缓存对象等做到复用等。而使用lombok
的形式的话,一切都是自动的,性能基本是没有损失的,由于对AST
不熟悉,之后有时间了可以进行插件编写下(去官网提过这个问题,官方回复说,不太符合lombok
的使用场景,⊙﹏⊙‖∣,还是自己动手,风衣足食吧~)
lombok.jar
包,会自动扫描系统的ide安装情况(或者手动指定目录),点击Install/Update
,即可。eclipse.ini
文件,设置javaagent
属性即可(第二种方法最后的效果也是这样的。):
1
|
<dependency>
|
@Getter / @Setter
:可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以指定Getter/Setter方法的访问级别。@EqualsAndHashCode
:默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以指定具体使用哪些属性。 @ToString 生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
:无参构造器、部分参数构造器、全参构造器
@Data:包含@ToString, @EqualsAndHashCode, 所有属性的@Getter, 所有non-final属性的@Setter和@RequiredArgsConstructor的组合,通常情况下,基本上使用这个注解就足够了。
@Budilder
:可以进行Builder方式初始化。
@Slf4j
:等同于:private final Logger logger = LoggerFactory.getLogger(XXX.class);简直不能更爽了!一般上用在其他java类上
更多注解说明,可查看:https://projectlombok.org/features/index.html
使用lombok
1
|
@Data
|
等同于
1
|
public class Demo {
|
使用@Slf4j
(摘抄至官网)
1
|
|
常规的
1
|
public class LogExampleOther {
|
省了多少事!!!少年快使用吧!
标签:art opener hub its 场景 工具 logger 简化 new
原文地址:https://www.cnblogs.com/daxigua/p/9668767.html