1.Lombok的使用
|
|-加依赖 |--<dependency><groupId>org.projectlombok</groupId>
| | <artifactId>lombok</artifactId>
| | <version>1.16.18</version><scope>provided</scope></dependency>
|
|-IDE安装插件
|
|-加注解 |--@Getter(value = AccessLevel.PUBLIC) : value可省略可修改
| |--@Setter(value = AccessLevel.PUBLIC)
| |--@ToString : 可以通过of属性限定显示某些字段,通过exclude属性排除某些字段
| |--@EqualsAndHashCode
| |--@NonNull :主要作用于成员变量和参数中,标识不能为空,否则空指针 ;如 @NonNull privare String name;
| |
| |--@NoArgsConstructor | 有staticName、access等属性
| |--@RequiredArgsConstructor | staticName属性一旦设定,将采用静态方法的方式生成实例
| |--@AllArgsConstructor | access属性可以限定访问权限
| |
| |--@Data :相当于 @ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
| |--@Builder :作用于类上,将类转变为建造者模式
| |
| |--@Log | 作用于类上,生成日志变量。针对不同的日志实现产品,有不同的注解:
| | | @CommonsLog @JBossLog @Log @Log4j @Log4j2 @Slf4j @XSlf4j
| |
| |--@Cleanup:自动关闭资源,针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象。
| |--@SneakyThrows:可以对受检异常进行捕捉并抛出
| |--@Synchronized:作用于方法级别,可以替换synchronize关键字或lock锁,用处不大
2.安装插件
IDEA中配置Lombok
|
|-- 点击File-- Settings设置界面,安装Lombok插件。
|-- 点击File-- Settings设置界面,开启 Annotation Processors(默认开启)-让Lombok注解在编译阶段起到作用
Eclipse中配置Lombok
|
|-- 下载 lombok.jar :https://projectlombok.org/download.html
|-- 引入 lombok.jar : 放在eclipse安装目录下(和eclipse.ini 文件平级)
|-- 在eclipse.ini配置文件中添加如下两项内容 |
| | |---" -Xbootclasspath/a:[lombok.jar所在路径] "
| | |---" -javaagent:[lombok.jar所在路径] "
| |例如
| |----|---- " -Xbootclasspath/a:D:\eclipse\eclipse\lombok.jar "
| | |---- " -javaagent:D:\eclipse\eclipse\lombok.jar "
3.Lombok实现原理
|
|--javac对源代码进行分析,生成一棵抽象语法树(AST)
|
|--javac编译过程中调用实现了JSR 269的Lombok程序
|
|--此时Lombok就对第一步骤得到的AST进行处理 |---找到Lombok注解所在类对应的语法树(AST),
| |---然后修改该语法树(AST),
| |---增加Lombok注解定义的相应树节点
|
|--javac使用修改后的抽象语法树(AST)生成字节码文件
自从Java 6起,javac就支持"JSR 269 Pluggable Annotation Processing API"规范,
只要程序实现了该API,就能在javac运行的时候得到调用。