这篇博文是这套Spring Boot学习笔记的第六篇——Lombok篇,主要内容包含通过Lombok工具减少实体类中的工作量。如果需要了解有关Spring Boot的综述信息或博文的索引信息,请移步: 《综述篇》
首先需要在pom.xml中添加以下依赖:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>由于Lombok采用了编译期解析的技术,所以在调试期调用相应的方法IDE会报错,所以必须安装插件。
通过File -> Settings打开设置界面。点击Plugins进入插件选项卡。在上方的搜索框输入Lombok,结果中第一个就是,点击Install即可。Lombok主要包含许多注解,通过合理的使用,可以大幅度减少开发的工作量,最适合在POJO中使用。
类注解,最常用的注解之一,功能强大。为被注解的类的属性生成setter/getter、equals、canEqual、hashCode、toString等方法,对于final属性,则不会为其生成setter方法。
由于@Data注解的功能粒度太大,其功能可以被以下的注解来分解:
@Getter和@Setter:用于独立指定生成getter和setter。@EqualsAndHashCode:用于生成equals和hashCode方法。 默认使用非静态(static)和非瞬态(transient)字段生成。可使用exclude属性排除一些字段。可使用of属性指定只用某些字段。默认不调用父类的方法,可使用callSuper = true来使其生成的方法调用父类的方法。 @ToString:用于生成toString方法。 举例说明,如以下的类: @Getter @Setter @ToString public class User { private int id; private String name; }构造一个对象并调用toString
public static void main(String[] args) { User user = new User(); user.setId(1); user.setName("Imple"); System.out.println(user.toString()); }输出如下:
User(id=1, name=Imple) @ToString同样有exclude、of和callSuper等属性,作用和@EqualsAndHashCode的类似。生成无参构造方法,如:
public class User { private int id; private String name; public User(){} }生成全参构造方法,如:
public class User { private int id; private String name; public User(int id, String name){ this.id = id; this.name = name; } }建造者模式,为类生成Builder内部类,创建对象的示例:
User user = new UserBuilder() .id(1) .name("Imple") .build();自动调用对象的close方法,也即目标类必须实现AutoCloseable接口。作用相当于try-with-resources,但是选用注解会让代码看起来更加整洁。
方法参数注解,如果加了注解的参数被传入了null,会抛出空指针异常。
日志类注解还有很多哦,基本上是与市面上的日志框架对等的,使用哪个根据工程中的配置和依赖。它的作用相当于:
private final Logger log = LoggerFactory.getLogger(当前类名.class);加上注解后可以直接在代码中调用log对象来输出日志。
可以看到Lombok的开发者相当于做了个大的抽象,把程序中具有一定格式或模式的代码抽象到对应的注解当中,尽最大可能帮助我们来减少编码的工作量。由此我有一个有趣的想法,这些场景都比较符合具有横切逻辑的场景的定义,Lombok这样是不是一定程序上抢了AOP的饭碗了呢?哈哈。
