1、@Data:在JavaBean中使用,註解包含包含getter、setter、NoArgsConstructor註解
@Value註解和@Data類似,區別在於它會把所有成員變量默認定義爲private final修飾,並且不會生成set方法
2、@getter:在JavaBean中使用,註解會生成對應的getter方法
3、@setter:在JavaBean中使用,註解會生成對應的setter方法
4、@NoArgsConstructor:在JavaBean中使用,註解會生成對應的無參構造方法
5、@AllArgsConstructor:在JavaBean中使用,註解會生成對應的有參構造方法
@RequiredArgsConstructor :生成private構造方法,使用staticName選項生成指定名稱的static方法。
6、@ToString:在JavaBean中使用,註解會自動重寫對應的toStirng方法
@ToString(exclude={"column1","column2"}):排除多個column列所對應的元素
@ToString(of={"column1","column2"}):只生成包含多個column列所對應的元素
7、@EqualsAndHashCode:在JavaBean中使用,註解會自動重寫對應的equals方法和hashCode方法
8、@Slf4j:在需要打印日誌的類中使用,項目中使用slf4j日誌框架
9、@Log4j:在需要打印日誌的類中使用,項目中使用log4j日誌框架
10、@NonNull:註解快速判斷是否爲空,爲空拋出java.lang.NullPointerException
11、@Synchronized:註解自動添加到同步機制,生成的代碼並不是直接鎖方法,而是鎖代碼塊, 作用範圍是方法上
12、@Cleanup:註解用於確保已分配的資源被釋放(IO的連接關閉)
************************************************重點線***************************************************
13、@Accessors(chain = true):鏈式風格,在調用set方法時,返回這個類的實例對象
@Accessors(chain = true)
@Setter
@Getter
public class Student {
private String name;
private int age;
}
/************************************/
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public Student setName(String name) {
this.name = name;
return this;
}
public int getAge() {
return age;
}
public Student setAge(int age) {
this.age = age;
return this;
}
}
////////////////////////////////////////////////////////////
Student student = new Student()
.setAge(24)
.setName("zs");
14、@RequiredArgsContructor(staticName = "of"):生成一個靜態方法,用於構建本類對象,與@NonNull聯用,指定那些屬性是本方法參數
@Accessors(chain = true)
@Setter
@Getter
@RequiredArgsConstructor(staticName = "of")
public class Student {
@NonNull
private String name;
private int age;
}
/******************************************/
@Accessors(chain = true)
@Setter
@Getter
public class Student {
private String name;
private int age;
public static Student of(String name) {
return new Student().setName(name);
}
}
/////////////////////////////////////////////////////////////////
Student student = Student.of("zs");
15、@Builder:構建者模式
@Builder
public class Student {
private String name;
private int age;
}
/****************************************/
@Getter
@Setter
public class Student {
private String name;
private int age;
public static Builder builder(){
return new Builder();
}
public static class Builder{
private String name;
private int age;
public Builder name(String name){
this.name = name;
return this;
}
public Builder age(int age){
this.age = age;
return this;
}
public Student build(){
Student student = new Student();
student.setAge(age);
student.setName(name);
return student;
}
}
}
/////////////////////////////////////////////////////////////
Student student = Student.builder().name("zs").age(24).build();
16、@Delegate:代理模式
@AllArgsConstructor
public abstract class FilterRestTemplate implements RestOperations {
@Delegate
protected volatile RestTemplate restTemplate;
}
/*********************************************/
public abstract class FilterRestTemplate implements RestOperations {
protected volatile RestTemplate restTemplate;
protected FilterRestTemplate(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@Override
public <T> T getForObject(String url, Class<T> responseType, Object... uriVariables) throws RestClientException {
return restTemplate.getForObject(url,responseType,uriVariables);
}
@Override
public <T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
return restTemplate.getForObject(url,responseType,uriVariables);
}
@Override
public <T> T getForObject(URI url, Class<T> responseType) throws RestClientException {
return restTemplate.getForObject(url,responseType);
}
@Override
public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Object... uriVariables) throws RestClientException {
return restTemplate.getForEntity(url,responseType,uriVariables);
}
//其他實現代碼略。。。
}