Lombok 注解小记

Scroll Down

1、 @Data 的使用。
Lombok中,@Data 相当于@Getter、@Setter、@RequiredArgsConstructor、@ToString、 @EqualsAndHashCode的合集。
通过官方注解得知,当时用@Data时,则有 @EqualsAndHashCode 的注解,那么就有了equals(Object o) 和 hashCode()方法,且不会使用父类的属性,这就导致了可能的问题。
比如,我们有很多类有相同的属性,把它们定义到父类中,比如ID(数据库主键)等等,那么就存在部分类并不相等,但却因为lombok自动生成的equals(Object o)和hashCode()的比较,判断为相等,导致程序的错误。
修复这个问题的方法也很简单:

a、 使用@Setter、@Getter等单个注解替换@Data注解
b、 在使用@Data注解的同时,加上@EqualsAndHashCode(callSuper = true) 注解

2、 @AllArgsConstructor 注解
我们在写controller层时,往往会引入很多的service,也会在每个引入service加上@Autowired 依赖注入,当有很多个service时,我又不想每个都是用 @Autowired 注解,那么有什么办法可以实现? 当然有,这时可以使用@AllArgsConstructor(onConstructor = @__(@Autowired)) 注解完成。例如:

@AllArgsConstructor(onConstructor = @__(@Autowired))
public class TestController {
	 private ITestOneService testOneService;
	private ITestTwoService testTwoService;
}

编译后为:

public class TestController {
	private ITestOneService testOneService;
	private ITestTwoService testTwoService;
@Autowired
    public RoleController(final ITestOneService testOneService, final ITestTwoService testTwoService) {
        this.testOneService = testOneService;
	this.testTwoService = testTwoService;
    }
}