在去北京培训的时候,讲师说到了lombok
这个第三方插件包,利用了之后发明,确实是个神奇,昆山软件开发,制止了编写许多臃肿的且定式的代码,固然现代的IDE
都能通过快捷键可能右键的方法,利用Generate Getters and Setters
快速生成setters/getters,但当某一个字段修改可能添加字段时,又需要反复的操纵一遍,但利用了lombok
之后。一切都是自动的,昆山软件开发,除了最常用的生成setters/getters
,尚有诸如:自动生成toString
要领、equals
、·haashcode·等,还能快速生成Builder模式
的javabean类,实在是利便。措施猿是很懒的,一切反复的事情都想通过剧本可能自动化东西来完成,所以,利用lombok
吧。
为何要利用Lombok
我们在开拓进程中,凡是城市界说大量的JavaBean,然后通过IDE去生成其属性的结构器、getter、setter、equals、hashcode、toString要领,当要增加属性可能对某个属性举办改变时,好比定名、范例等,都需要从头去生成上面提到的这些要领。这样反复的劳动没有任何意义,Lombok内里的注解可以轻松办理这些问题。
Lombok简介
Lombok是一个可以通过简朴的注解形式来辅佐我们简化消除一些必需有但显得很臃肿的Java代码的东西,通过利用对应的注解,劳务派遣管理系统,可以在编译源码的时候生成对应的要领。
官方地点:https://projectlombok.org/ github地点:https://github.com/rzwitserloot/lombok
官网对其表明为:
苏州软件公司 、getter、setter、equals、hashcode、toString要领" class="aligncenter size-full wp-image-29275" title="59644057" src="/uploads/allimg/c180728/1532H1a221310-12R7.png" />
这里简朴说下lombok
实现的道理:主要是通过抽象语法树(AST)
,在编译处理惩罚后,匹配到有其注解的类,那么注解编译器就会自动去匹配项目中的注解对应到在lombok语法树中的注解文件,并颠末自动编译匹配来生成对应类中的getter可能setter要领,到达简化代码的目标。
操作此道理,也可自行编写一些事情中一些常常利用到的,好比实体类转Map工具,map工具转实体类,原本利用Beanutils
可能cglib的BeanCopier
实现转换,前者利用的是反射的机制,所以机能相对较差,后者是利用修改字节码技能,机能在未利用Converter
时根基等同于set
和get
要领。但说白了照旧贫苦,究竟还需要缓存工具等做到复用等。而利用lombok
的形式的话,一切都是自动的,机能根基是没有损失的,由于对AST
不熟悉,之后有时间了可以举办插件编写下(去官网提过这个问题,官方回覆说,不太切合lombok
的利用场景,⊙﹏⊙‖∣,照旧本身动手,风衣足食吧~)
eclipse 安装
lombok.jar
包,会自动扫描系统的ide安装环境(可妙手动指定目次),点击Install/Update
,即可。苏州软件公司 、getter、setter、equals、hashcode、toString要领" class="aligncenter size-full wp-image-29276" title="17556273" src="/uploads/allimg/c180728/1532H1a22430-2P53.png" />
eclipse.ini
文件,配置javaagent
属性即可(第二种要领最后的结果也是这样的。):苏州软件公司 、getter、setter、equals、hashcode、toString要领" class="aligncenter size-full wp-image-29277" title="10464293" src="/uploads/allimg/c180728/1532H1a22R50-34F5.png" />
Lombok利用
添加maven依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> </dependency>
常用注解先容
@Getter / @Setter
:可以浸染在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter要领,放在属性上,会对该属性生成Getter/Setter要领。并可以指定Getter/Setter要领的会见级别。@EqualsAndHashCode
:默认环境下,会利用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode要领,也可以指定详细利用哪些属性。 @ToString 生成toString要领,默认环境下,会输出类名、所有属性,属性会凭据顺序输出,以逗号支解。@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
:无参结构器、部门参数结构器、全参结构器@Budilder
:可以举办Builder方法初始化。@Slf4j
:等同于:private final Logger logger = LoggerFactory.getLogger(XXX.class);的确不能更爽了!一般上用在其他java类上更多注讲解明,可查察:https://projectlombok.org/features/index.html
简朴利用示例
利用lombok
@Data @Builder @NoArgsConstructor @AllArgsConstructor public class Demo { String code; String name; }