Java-idea-常用插件-lombok
1、插件安装
打开perferences或者settings,找打plugins,选择Browse repositories...,搜索lombok,下载安装重启即可。
2、支持的注解:
2.1、@Getter and @Setter:
可以作用在类上和属性上;放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法;放在属性上,会对该属性生成Getter/Setter方法。默认生成的方法是public的,如果要修改方法修饰符可以设置AccessLevel的值,例如:@Getter(access = AccessLevel.PROTECTED)
2.2、@FieldNameConstants
2.3、@ToString
2.4、@EqualsAndHashCode
  默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,可以通过在可选的exclude参数中来排除更多字段。或者,通过在parameter参数中命名它们来准确指定希望使用哪些字段。
2.5、@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor
无参构造器、部分参数构造器、全参构造器,当我们需要重载多个构造器的时候,Lombok就无能为力了。
@AllArgsConstructor 生成一个全参数的构造方法
2.6、@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger
  注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
2.7、@Data【常用】
  @ToString, @EqualsAndHashCode, 所有属性的@Getter, 所有non-final属性的@Setter和@RequiredArgsConstructor的组合,
通常情况下,我们使用这个注解就足够了。
2.8、其他
@Builder:为你的类生成复杂的构建器API。
@Singular
@Delegate:相当的牛逼,它会该类生成一些列的方法,这些方法都来自与List接口
@Value
@Accessors
  主要用于控制生成的getter和setter
  主要参数介绍
- fluent boolean值,默认为false。此字段主要为控制生成的getter和setter方法前面是否带get/set
 - chain boolean值,默认false。如果设置为true,setter返回的是此对象,方便链式调用方法
 - prefix 设置前缀 例如:@Accessors(prefix = "abc") private String abcAge 当生成get/set方法时,会把此前缀去掉
 
@Wither:提供了给final字段赋值的一种方法
@Cleanup:关闭流 
@Synchronized:给方法加上同步锁,对象同步 
@SneakyThrows:抛出异常
from Intellij 14.1 @val
from Intellij 15.0.2 @var
from Intellij 14.1 @var
from Intellij 2016.2 @UtilityClass
Lombok config system
Code inspections
Refactoring actions (lombok and delombok)
3、配置注解处理器
在perferences或Settings设置页面,点击【Build,Execution,Deployment】-->选择Compiler-->选中Annotation Processors,然后在右侧勾选Enable annotation processing即可。
注意。每个项目都需设置此项,如果不配置此项lombok注解不会生效。
4、引用pom
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
5、程序使用
主要使用步骤2中注解
6、原理
1.运行时解析
运行时能够解析的注解,必须将@Retention设置为RUNTIME,这样可以通过反射拿到该注解。java.lang.reflect反射包中提供了一个接口AnnotatedElement,
该接口定义了获取注解信息的几个方法,Class、Constructor、Field、Method、Package等都实现了该接口,大部分开发者应该都很熟悉这种解析方式。
2.编译时解析
2.1、Annotation Processing Tool
  apt自JDK5产生,JDK7已标记为过期,不推荐使用,JDK8中已彻底删除,自JDK6开始,可以使用Pluggable Annotation Processing API来替换它,
apt被替换主要有2点原因:
api都在com.sun.mirror非标准包下
没有集成到javac中,需要额外运行
  apt的更多介绍可以参见这里。
2.2、Pluggable Annotation Processing API
  JSR 269,自JDK6加入,作为apt的替代方案,它解决了apt的两个问题,javac在执行的时候会调用实现了该API的程序,这样我们就可以对编译器做一些增强,
这时javac执行的过程如下: 这里写图片描述 
  Lombok就是使用这种方式实现的,有兴趣的话可以去看看其Lombok源码,对应注解的实现都在HandleXXX中,
比如@Getter注解的实现是HandleGetter.handle()。
还有一些其它类库使用这种方式实现,比如Google Auto、Dagger等等。
缺点:无法支持多种参数构造器的重载
Java-idea-常用插件-lombok的更多相关文章
- IDEA Java开发常用插件
		
这里只是推荐一下好用的插件,具体的使用方法就不一一详细介绍了. JRebel for IntelliJ 一款热部署插件,只要不是修改了项目的配置文件,用它都可以实现热部署.收费的,破解比较麻烦.不过功 ...
 - Java代码简化神器-Lombok
		
一.背景 前段时间在开源社区中发现了一个比较牛逼的简化Java代码的神器-Lombok,接着自己写了demo进行测试和练习,感觉真的很不错,特此分享给需要的小伙伴们~ 二.开发之前的准备 1.lomb ...
 - AS【常用插件】
		
安装插件,Settings -->[Plugins]-->搜索-->点击install-->重启AS 禁用插件,右侧面板会显示出已经安装的插件列表,取消勾选即可禁用插件 AS插 ...
 - IDEA实用插件Lombok
		
Lombok Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法.通常,我们所定义的对象和be ...
 - AS 常用插件 MD
		
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
 - idea教程视频以及常用插件整理
		
最近在同事的强烈安利下把eclipse换成idea了,本以为需要经历一个艰难的过渡期,谁知道不到3天就深感回不去了. 哎,只能说有时候人的惰性是多么可怕! idea实在是太太太强大了. 不要再问原因. ...
 - idea常用插件
		
1. 装逼插件 1.1 activate-power-mode 其设置在菜单栏window——active-power-mode下设置颜色是否显示,窗口是否晃动等等 1.2 Backgrou ...
 - IDEA常用插件记录
		
让我们来记录一下常用的IDEA插件:(从其他博客中取了许多图片,出处见图片水印) 1.JRebel for IntelliJ 热部署神器2.Free MyBatis plugin 实现dao层方法与x ...
 - Java开发IDEA插件推荐
		
IDEA插件推荐 Alibaba Java Coding Guidelines MyBatisCodeHelper-Pro Lombok GsonFormat AceJump Statistic Tr ...
 - Maven常用插件
		
maven利用各种插件来管理构建项目,本文记录下工作中常用到的插件及使用方法.每个插件都会提供多个目标(goal),用于标示任务.各插件配置在pom.xml里,如下: <build> [. ...
 
随机推荐
- mui---自定义页面打开的方向
			
在使用MUI做APP的时候,会考虑对页面的打开方向做规定,MUI也给我们提供了很多种页面的打开方式. 具体参考: http://ask.dcloud.net.cn/question/174 MUI做A ...
 - numpy 中不常用的一些方法
			
作者:代码律动链接:https://zhuanlan.zhihu.com/p/36303821来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 挑战 1:引入 numpy ...
 - 还有看不懂的java语句?
			
Person stuProxy= (Person) Proxy.newProxyInstance(Person.class.getClassLoader(), new Class<?>[] ...
 - 校验字符串是否是JSON格式,将不规则展示的json格式的字符串进行规则展示(json格式化)
			
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] var str = {"code": "","svcname" ...
 - Xshell设置网络设备自动登录
			
使用Xshell登录网络设备时候需要手动输入用户名和密码 设置免输入用户名及密码 用户名 密码 再次登录就不需要手动输入用户名和密码了
 - 泡泡一分钟:Motion Planning for a Small Aerobatic Fixed-Wing Unmanned Aerial Vehicle
			
Motion Planning for a Small Aerobatic Fixed-Wing Unmanned Aerial Vehicle Joshua Levin, Aditya Paranj ...
 - ubuntu下安装bin文件
			
从Java官网下载的安装文件,有的只有bin文件,没有.tar.gz文件. ①进入设备终端,通过sudo -s或su回车,切换到管理员用户:②输入管理员密码然后回车:③输入sudo chmod +x ...
 - [No0000149]ReSharper操作指南6/16-编码协助之其他协助
			
语法高亮 ReSharper扩展了默认Visual Studio的符号高亮显示.此外,它还会使用可配置的颜色突出显示字段,局部变量,类型和其他标识符.例如,ReSharper语法突出显示允许您轻松区分 ...
 - [No0000117]visual studio 调试WebForm 显示 HTTP Error 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。
			
调试界面如下: 解决办法1:右键设置起始页. 影响文件: 解决方案2:Web.config中添加默认页面配置: <system.webServer> <defaultDocument ...
 - 解决eclipse在线安装不了genymotion
			
解决eclipse在线安装不了genymotion 2015-8-2阅读161 评论0 今天在网上看见网友说genymotion安卓模拟器是多麽的流畅,比起google自带的那些emulator快十倍 ...