Lombok学习笔记

Lombok学习笔记

1. 介绍

  • 作用:简化代码编写,提高开发效率

  • 使用lombok之前先要在IDE上安装lombok插件。

  • 在构建工具中整合lombok,如maven项目中需要在pom.xml文件中加上:

    
      org.projectlombok
      lombok
      1.16.16
    
    
  • 使用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);
  }
}

你可能感兴趣的:(Lombok学习笔记)