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); } //其他實現代碼略。。。 }
