根据
Java Bean
的规范,Bean 就是一个简单的类,主要是属性和访问函数 Getter and Setter 等,都是模版性的代码,虽然有 IDE 帮助我们自动生成,但是代码打开后全是一大堆的访问函数,看上去也不舒服,更郁闷的是,有时候 Bean 有几十个属性,添加一个新的属性后也很容易忘了添加相应的访问函数,而 Java 的很多框架对属性的访问都是使用反射和访问函数来查找的,由于缺少访问函数导致有时候后端得到了数据,但是前端始终缺几个数据,逻辑看上去又没问题,很难得一下发现问题在哪里 (已经发生过好几次)。现在好了,我们可以使用
Lombok
来自动的为 Bean 生成访问函数。
一般使用下面 3 个注解就足够了,没必要搞得更麻烦:
@Getter
@Setter
@Accessors(chain=true)
虽然 @Data 的功能很强大,但是阅读上不够直观,所以不推荐使用。
@Data is equivalent to @Getter, @Setter, @RequiredArgsConstructor, @ToString and @EqualsAndHashCode.
Lombok 不会影响程序的运行性能,它使用 javac 的插件机制在编译阶段生成访问函数到 class 的字节码里,和我们直接写没有什么区别,反编译一下生成的 class 文件就一目了然了。
1
|
compile 'org.projectlombok:lombok:1.16.14'
|
1 2 3 4 5 6 7 8 9
|
public class Test { public static void main(String[] args) { User user = new User(1, "Alice", "alice@gmail.com"); System.out.println(user.getUsername()); System.out.println(user.getEmail()); user.setUsername("Bob").setEmail("bob@gmail.com"); } }
|
alice@gmail.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
public class User { private int id; private String username; private String email;
public User() { }
public User(int id, String username, String email) { this.id = id; this.username = username; this.email = email; }
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; } }
|
-
https://projectlombok.org
-
Lombok @Getter and @Setter