Lombok学习笔记
1. 介绍
-
作用:简化代码编写,提高开发效率
-
使用lombok之前先要在IDE上安装lombok插件。
-
在构建工具中整合lombok,如maven项目中需要在pom.xml文件中加上:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.16</version> </dependency>
-
使用Lombok注解的效率和不使用Lombok自行手动编写代码的效率相同(代码反编译后的结果看出)。
2. 使用
2.1 Getter和Setter注解
举例,之前我们编写一个博客类如下:
public class Blog {
private Integer id;
private String name;
private String description;
private String content;
private String cover;
private String tag;
private String summary;
public Interger getId(){
returnt this.id;
}
......
}
如果想获取到这个Blog类的成员变量,需要在这个Blog类的内部定义上给每个字段定义get和set方法,这样才能被外部访问。但是麻烦之处就在于如果后来突然想在这个类上再加一个变量,那么就只能再手动添加这个变量对应的的get和set方法。为了解决这个问题,Lombok提供了@Getter和@Setter注解:
@Getter
@Setter
public class Blog {
private Integer id;
private String name;
private String description;
private String content;
private String cover;
private String tag;
private String summary;
}
通过这两个注解,就可以在不手动编写getter和setter方法的前提下,访问所有成员变量:
Blog blog = new Blog();
blog.getId();
同理,除了getter和setter注解外,我们还会通常给类加上toString()方法和equals()方法。Lombok也给我们提供了:@EqualsAndHashCode和@ToString注解来省去这两个方法的编写。
2.2 Data注解
@Data注解是一个组合注解,它包含了@Getter,@Setter,EqualsAndHashCode和@ToString这四个注解,这样上面的示例就可以改成:
@Data
public class Blog {
private Integer id;
...
}
只用写一个注解就可以起到同样的效果。
2.3 构造函数注解
Lombok提供了几个替代编写构造函数的注解:
- @NoArgsConstructor :无参数的构造函数
- @AllArgsConstructor : 全参的构造函数
- @RequiredArgsConstructor : 指定参数的构造函数
其中要注意的是@RequiredArgsConstructor注解会给标记为final类型的成员变量创建出构造方法。
2.4 Builder注解
在之前我们创建对象并给对象的成员变量赋值写法如下:
Blog blog = new Blog();
blog.setId(id);
blog.setName(name);
...
但是如果给类添加一个Builder注解后:
@Builder
public class Blog {
private Integer id;
...
}
在创建对象并赋值的时候就可以写作:
Blog blog = Blog.builder().
id(id).
name(name).
...
build();
可以看到创建对象并给变量赋值的形式更加清晰明了。这种写法写作建造者模式。
2.5 Slf4j注解
之前在使用slf4j给代码添加注解是这么实现的:
public class BlogController {
public static final Logger LOGGER = LoggerFactory.
getLogger(BlogController.class);
public static void main(String[] args){
LOGGER.info("id={}",id);
}
}
为了省略Logger对象的手动创建过程,Lombok也提供了@Slf4j注解,自动创建一个log对象:
@Slf4j
public class BlogController {
public static void main(String[] args){
log.info("id={}",id);
}
}
网友评论