Idea使用lombok的一些坑

Idea使用lombok的一些坑

起源

  前一段时间公司项目需要解析xml文件,然后用的dom4j,但是有人推荐我使用jaxb进行xml和java Bean的转换,于是自己搭建在idea搭建一个工程测试xml解析的测试应用,不过在使用idea集成lombok包的时候确实触了很多雷,以此篇记录一下:

1.引入lombok依赖


		<dependency>
			<groupId>org.projectlombokgroupId>
			<artifactId>lombokartifactId>
			<version>1.16.18version>
			<scope>providedscope>
		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属性。

部分代码及注释引用于:
作者:意识流丶

你可能感兴趣的:(工具)