Lombok注解
@Accessors
对实体的get/set
方法进行一下转换
它有三个参数:
- fluent:默认为
false
,若设置为true
,则获取对象属性是无需getXX
,直接通过a.xx
获取。
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
| @Accessors(fluent = true) public class B{ private String name; }
public class B { private String name;
public B() { }
public B name(String name) { this.name = name; return this; }
public String name() { return this.name; } }
public static void main(String[] args) { B b = new B(); B bb = b.name("123"); System.out.println(b.name()); }
|
- chain:默认为
false
,设置为true
后,set
方法会返回当前对象
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
| @Setter @Getter @Accessors(chain = true) public class B{
private String name; }
public class B { private String name;
public B() { }
public B setName(String name) { this.name = name; return this; }
public String getName() { return this.name; } }
|
- prefix:默认为
{}
,设置生成的get/set
方法忽略前缀集合。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| @Setter @Getter @Accessors(prefix = {"test"}) public class B{
private String testName; }
public class B { private String testName;
public B() { } public void setName(String testName) { this.testName = testName; } public String getName() { return this.testName; } }
|
@RequiredArgsConstructor
简化了一些@Autowired注解,可以减少@Autowired的书写,我们在写controller或者Service层的时候,需要注入很多的mapper接口或者另外的service接口,这时候就会写很多的@Autowired注解,代码看起来很繁琐。
不是用这个注解时:
1 2 3 4 5 6 7 8 9 10 11 12
| @Service public class BService {
@Autowired private AService aService;
@Autowired private CService cService;
@Autowired private DService dService; }
|
使用这个注解:
1 2 3 4 5 6 7 8 9
| @RequiredArgsConstructor public class BService {
private final AService aService; private final CService cService;
private final DService dService; }
|
注:这个注解要生效,字段上需要使用final
修饰或者标记@NotNull
才可以生效。
编译后的文件为(会生成一个构造函数):
1 2 3 4 5 6 7 8 9 10 11 12 13
| @Component public class BService { private final AService aService;
public void test() { this.aService.test(); System.out.println("test"); }
public BService(final AService aService) { this.aService = aService; } }
|
@SneakyThrows
Lombok的@SneakyThrows详解