Idea使用lombok的一些坑
起源
前一段时间公司项目需要解析xml文件,然后用的dom4j,但是有人推荐我使用jaxb进行xml和java Bean的转换,于是自己搭建在idea搭建一个工程测试xml解析的测试应用,不过在使用idea集成lombok包的时候确实触了很多雷,以此篇记录一下:
1.引入lombok依赖
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
2.为idea加入lombok插件
tips : 一定要使用比idea版本低的lombok版本
- 使用idea自带插件库安装
进入File–>Settings–>Plugins,搜索安装lombok插件即可 - 使用zip方式安装
在idea plugin官网下载zip包,lombok-plugin
3.设置Annotation Processors
- 进入Settings–>Build,Excecution*–>Compiler–>Annotation Processors
- 勾选 Enabled annotation processing
关于lombok中注解的常用用法和解释
val : 和 scala 中 val 同名, 可以在运行时确定类型;
- @NonNull : 注解在参数上, 如果该类参数为 null , 就会报出异常, throw new NullPointException(参数名)
- @Cleanup : 注释在引用变量前, 自动回收资源 默认调用 close() 方法
- @Getter/@Setter : 注解在类上, 为类提供读写属性
- @Getter(lazy=true) :
- @ToString : 注解在类上, 为类提供 toString() 方法
- @EqualsAndHashCode : 注解在类上, 为类提供 equals() 和 hashCode() 方法
- @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor : 注解在类上, 为类提供无参,有指定必须参数, 全参构造函数
- @Data : 注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法
- @Builder : 注解在类上, 为类提供一个内部的 Builder
- @SneakThrows :
- @Synchronized : 注解在方法上, 为方法提供同步锁
- @Log4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象
- @Slf4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象
JAXB(Java Architecture for XML Binding)
- JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。
- Marshaller接口,将Java对象序列化为XML数据。
- Unmarshaller接口,将XML数据反序列化为Java对象。
- @XmlType,将Java类或枚举类型映射到XML模式类型
- @XmlAccessorType(XmlAccessType.FIELD) ,控制字段或属性的序列化。FIELD表示JAXB将自动绑定Java类中的每个非静态的(static)、非瞬态的(由@XmlTransient标 注)字段到XML。其他值还有XmlAccessType.PROPERTY和XmlAccessType.NONE。
- @XmlAccessorOrder,控制JAXB 绑定类中属性和字段的排序。
- @XmlJavaTypeAdapter,使用定制的适配器(即扩展抽象类XmlAdapter并覆盖marshal()和unmarshal()方法),以序列化Java类为XML。
- @XmlElementWrapper ,对于数组或集合(即包含多个元素的成员变量),生成一个包装该数组或集合的XML元素(称为包装器)。
- @XmlRootElement,将Java类或枚举类型映射到XML元素。
- @XmlElement,将Java类的一个属性映射到与属性同名的一个XML元素。
- @XmlAttribute,将Java类的一个属性映射到与属性同名的一个XML属性。
部分代码及注释引用于:
作者:意识流丶