一,Lombok簡(jiǎn)介
? java工程中,我們要?jiǎng)?chuàng)建很多的java Bean。這些javaBean中都會(huì)寫(xiě)getter,setter,equals,hashCode和toString的模板代碼,這些代碼都沒(méi)啥技術(shù)含量。
? 那么我們就是使用Lombok來(lái)自動(dòng)生成這些代碼,通過(guò)注解的方式。提高我們的工作效率。
? Lombok的原理:JSR 269插件化注解處理。就是在編譯生成字節(jié)碼之前,Lombok根據(jù)自己編寫(xiě)的注解處理器,動(dòng)態(tài)地修改 AST增加新的節(jié)點(diǎn)(即Lombok自定義注解所需要生成的代碼),最終生成JVM可執(zhí)行的字節(jié)碼Class文件。
什么是JSR 269?
JSR 269: Pluggable Annotation Processing API
實(shí)現(xiàn)在Javac編譯階段利用“Annotation Processor”對(duì)自定義的注解進(jìn)行預(yù)處理后生成真正在JVM上面執(zhí)行的“Class文件
java反射技術(shù)的對(duì)比:
- 使用Annotation Processing自定義注解是在編譯階段進(jìn)行修改
- JDK的反射技術(shù)是在運(yùn)行時(shí)動(dòng)態(tài)修改
結(jié)論:反射更加靈活一些但是帶來(lái)的性能損耗更加大
二,添加依賴
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
三,Springboot統(tǒng)一返回封裝
這種格式主要包含3部分:
code:狀態(tài)碼, 由后端統(tǒng)一定義各種返回結(jié)果的狀態(tài)碼
message:描述信息
data:返回的數(shù)據(jù),例如列表數(shù)據(jù)
3.1,創(chuàng)建一個(gè)工具包util和一個(gè)JsonData類(lèi)
JsonData類(lèi)
package com.demo.util;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor //會(huì)生成一個(gè)包含所有變量
@NoArgsConstructor //生成一個(gè)無(wú)參數(shù)的構(gòu)造方法
public class JsonData {
/**
* 狀態(tài)碼 0 表示成功,1表示處理中,-1表示失敗
*/
private Integer code;
/**
* 數(shù)據(jù)
*/
private Object data;
/**
* 描述
*/
private String msg;
// 成功,傳入數(shù)據(jù)
public static JsonData buildSuccess() {
return new JsonData(0, null, null);
}
// 成功,傳入數(shù)據(jù)
public static JsonData buildSuccess(Object data) {
return new JsonData(0, data, null);
}
// 失敗,傳入描述信息
public static JsonData buildError(String msg) {
return new JsonData(-1, null, msg);
}
// 失敗,傳入描述信息,狀態(tài)碼
public static JsonData buildError(String msg, Integer code) {
return new JsonData(code, null, msg);
}
}
這個(gè)類(lèi)寫(xiě)完就不用在實(shí)體類(lèi)里寫(xiě)get和set方法
四,示例實(shí)體類(lèi)
在實(shí)體類(lèi)上加@Data注釋就可以不用寫(xiě)get和set方法
加注釋@Data這個(gè)注釋和寫(xiě)get和set方法效果一樣文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-708429.html
package com.demo.bean;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.Version;
import lombok.Data;
@Data
public class Passer {
/** */
private Integer id ;
/** */
private String passername ;
/** */
private String passerage ;
/** */
private String passersex ;
@Version
private Integer version;
@TableLogic(value = "0",delval = "1")
private Integer deleted;
}
五,@Data注解
@Data, 定義一個(gè)干凈的類(lèi),增加此注解,mvn compile查看字節(jié)碼
作用于類(lèi)上,是以下注解的集合@ToString
@EqualsAndHashCode
@Getter
@Setter
@RequiredArgsConstructor
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-708429.html
到了這里,關(guān)于SpringBoot2.0(Lombok,SpringBoot統(tǒng)一返回封裝)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!