0%

Lombok注解

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;
}

// 编译后B.class
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();
// 这里好像相当于同时开启了chain属性,set方法会返回当前对象
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;
}

// 编译后,几乎和fluent=true编译生成一致,同样在set方法会返回当前对象
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() {
}
// set方法名上会忽略test字样
public void setName(String testName) {
this.testName = testName;
}
// get方法名上会忽略test字样
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详解

-------------本文结束感谢您的阅读-------------