好久沒有更新文章了,高齡開發(fā)沒什么技術(shù),去了外包公司后沒怎么更新文章了。今天分享下統(tǒng)一處理starter,相信開發(fā)web系統(tǒng)的時候都是會涉及到前后端的交互,而后端返回數(shù)據(jù)的時候一般都會統(tǒng)一封裝一個返回對象和統(tǒng)一處理異常,一般情況下都是在controller的每個方法中調(diào)用封裝的對象,把相應(yīng)的數(shù)據(jù)塞到data字段,然后返回給前端。而異常處理則是拋出某個業(yè)務(wù)異常,然后利用spring切面進(jìn)行攔截處理。每個項(xiàng)目都需要做這些重復(fù)的動作,所以我把這個處理封裝成了starter,下面介紹已下這個starter的使用,最后給出git庫供大家學(xué)習(xí)交流。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)繁昌免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。## 添加依賴
添加統(tǒng)一處理依賴
? ?io.gitee.javalaoniu ? ? jud-springboot-starter? ?0.0.1
## 啟用統(tǒng)一處理
添加 @EnableUnifiedDisposal 注解
import io.gitee.javalaoniu.jud.annotation.EnableUnifiedDisposal; ?
import org.springframework.boot.SpringApplication; ?
import org.springframework.boot.autoconfigure.SpringBootApplication; ?
??
@EnableUnifiedDisposal ?
@SpringBootApplication ?
public class JudDemoApplication { ?
? ? public static void main(String[] args) { ?
? ? ? ? SpringApplication.run(JudDemoApplication.class, args); ?
? ? } ?
}
## 攔截的處理
像平常一樣返回數(shù)據(jù)即可,不需要做其它
import io.gitee.javalaoniu.jud.annotation.IgnoreResponseAdvice; ?
import io.gitee.javalaoniu.jud.common.Result; ?
import io.gitee.javalaoniu.jud.exception.BusinessException; ?
import io.gitee.javalaoniu.jud.exception.ExceptionCode; ?
import org.springframework.web.bind.annotation.GetMapping; ?
import org.springframework.web.bind.annotation.RestController; ?
??
import java.util.ArrayList; ?
import java.util.List; ?
??
@RestController ?
public class DemoController { ?
??
? ? @GetMapping("test1") ?
? ? public String stringTest() { ?
? ? ? ? return "hello"; ?
? ? ? ? // {"code":200,"data":"hello","succ":true,"ts":1673943672244}
? ? } ?
??
? ? @GetMapping("test2") ?
? ? public String stringNullTest() { ?
? ? ? ? return null; ?
? ? ? ? // {"code":200,"data":"","succ":true,"ts":1673943691844}
? ? } ?
??
? ? @GetMapping("test3") ?
? ? public Object objectEntityTest() { ?
? ? ? ? DemoEntity demoEntity = new DemoEntity(); ?
? ? ? ? demoEntity.setName("張三"); ?
? ? ? ? demoEntity.setAge(50); ?
? ? ? ? demoEntity.setSex(false); ?
? ? ? ? demoEntity.setSalary(4500000001542.26); ?
? ? ? ? return demoEntity; ?
? ? ? ? // {"succ":true,"ts":1673943709119,"data":{"name":"張三","age":50,"sex":false,"salary":4.50000000154226E12},"code":200,"msg":null}
? ? } ?
??
? ? @GetMapping("test4") ?
? ? public Object objectNotNullTest() { ?
? ? ? ? return "hello Object"; ?
? ? ? ? // {"code":200,"data":"hello Object","succ":true,"ts":1673943726435}
? ? } ?
??
? ? @GetMapping("test5") ?
? ? public Object objectNullTest() { ?
? ? ? ? return null; ?
? ? ? ? // 啥也沒返回,但是如果配置了json轉(zhuǎn)換器的話會返回:{"code":200,"data":null,"succ":true,"ts":1673943726435}
? ? } ?
??
? ? @GetMapping("test6") ?
? ? public ListlistTest() { ?
? ? ? ? DemoEntity demoEntity2 = new DemoEntity(); ?
? ? ? ? demoEntity2.setName("張三"); ?
? ? ? ? demoEntity2.setAge(50); ?
? ? ? ? demoEntity2.setSex(false); ?
? ? ? ? demoEntity2.setSalary(4500000001542.26); ?
??
? ? ? ? DemoEntity demoEntity = new DemoEntity(); ?
? ? ? ? demoEntity.setName("張三"); ?
? ? ? ? demoEntity.setAge(50); ?
? ? ? ? demoEntity.setSex(false); ?
? ? ? ? demoEntity.setSalary(4500000001542.26); ?
??
? ? ? ? Listlist = new ArrayList<>(); ?
? ? ? ? list.add(demoEntity); ?
? ? ? ? list.add(demoEntity2); ?
??
? ? ? ? return list; ?
? ? ? ? // {"succ":true,"ts":1673943797079,"data":[{"name":"張三","age":50,"sex":false,"salary":4.50000000154226E12},{"name":"張三","age":50,"sex":false,"salary":4.50000000154226E12}],"code":200,"msg":null}
? ? } ?
??
? ? @GetMapping("test7") ?
? ? public ListlistNullTest() { ?
? ? ? ? return null; ?
? ? ? ? // {"succ":true,"ts":1673943819382,"data":null,"code":200,"msg":null}
? ? } ?
??
? ? @GetMapping("test8") ?
? ? public Result resultTest() { ?
? ? ? ? DemoEntity demoEntity = new DemoEntity(); ?
? ? ? ? demoEntity.setName("張三"); ?
? ? ? ? demoEntity.setAge(50); ?
? ? ? ? demoEntity.setSex(false); ?
? ? ? ? demoEntity.setSalary(4500000001542.2656564545); ?
? ? ? ? return Result.success(demoEntity); ?
? ? ? ? // {"succ":true,"ts":1673943832081,"data":{"name":"張三","age":50,"sex":false,"salary":4.500000001542266E12},"code":200,"msg":null}
? ? } ?
??
? ? @IgnoreResponseAdvice ?
? ? @GetMapping("test9") ?
? ? public String ignoreResponseTest() { ?
? ? ? ? return "IgnoreResponseAdvice"; ?
? ? ? ? // IgnoreResponseAdvice
? ? } ?
??
? ? @GetMapping("test10") ?
? ? public String businessExceptionTest() { ?
? ? ? ? throw new BusinessException(ExceptionCode.EXCEPTION); ?
? ? ? ? // {"succ":false,"ts":1673943862588,"data":null,"code":500,"msg":"服務(wù)器開小差,請稍后再試(Internal Server Error)"}
? ? } ?
}
## 不攔截處理
對不需要統(tǒng)一處理的controller或者方法使用下面注解
@IgnoreResponseAdvice ?
@GetMapping("test9") ?
public String ignoreResponseTest() { ?
?? ?// 在方法上使用,直接返回IgnoreResponseAdvice字符串給前端
? ? return "IgnoreResponseAdvice"; ?
}
可以看到,使用統(tǒng)一處理starter后,統(tǒng)一返回對象和統(tǒng)一異常處理不需要自己在處理,非常方便。
git倉庫地址:https://gitee.com/javalaoniu/javalaoniu-jud
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
文章標(biāo)題:統(tǒng)一返回對象封裝和統(tǒng)一異常捕獲封裝springbootstarter-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://muchs.cn/article48/shchp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、微信小程序、標(biāo)簽優(yōu)化、搜索引擎優(yōu)化、網(wǎng)站策劃、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容