日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

boot返回码规范 spring_sprigboot-new-coding-standards

發(fā)布時(shí)間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 boot返回码规范 spring_sprigboot-new-coding-standards 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

sprigboot-new-coding-standards

介紹

SpringBoot腳手架,遵守嚴(yán)格的代碼規(guī)范。

規(guī)范詳細(xì)說明

1.遵循標(biāo)準(zhǔn)RESTful API

2.異常采用枚舉進(jìn)行封裝(業(yè)務(wù)內(nèi)部異常往上拋,返回客戶端需要將對應(yīng)的異常轉(zhuǎn)換為具體的狀態(tài)的,這里介紹Spring提供的全局異常處理)

package org.niugang.coding.advice;

import lombok.extern.slf4j.Slf4j;

import org.niugang.coding.enums.ExceptionEnum;

import org.niugang.coding.exception.ServiceException;

import org.niugang.coding.vo.ExceptionResult;

import org.springframework.http.HttpStatus;

import org.springframework.http.ResponseEntity;

import org.springframework.validation.BindException;

import org.springframework.web.bind.MethodArgumentNotValidException;

import org.springframework.web.bind.annotation.ControllerAdvice;

import org.springframework.web.bind.annotation.ExceptionHandler;

import javax.validation.ConstraintViolationException;

import java.util.HashMap;

import java.util.Map;

/**

* 全部異常處理

*

* @author Created by niugang on 2018/12/26/12:19

*/

@ControllerAdvice

@Slf4j

public class BasicExceptionHandler {

/**

* 具體業(yè)務(wù)層異常

*

* @param e 業(yè)務(wù)異常

* @return ResponseEntity

*/

@ExceptionHandler(ServiceException.class)

public ResponseEntity handleException(ServiceException e) {

/**

* 響應(yīng)的狀態(tài)碼,為枚舉中定義的狀態(tài)碼

*/

return ResponseEntity.status(e.getExceptionEnum().value())

.body(new ExceptionResult(e.getExceptionEnum()));

}

/**

* 業(yè)務(wù)處理未知異常

*

* @param e 異常

* @return ResponseEntity

*/

@ExceptionHandler(Exception.class)

public ResponseEntity> exceptionResultResponseEntity(Exception e) {

//所有參數(shù)異常

//在對象上綁定校驗(yàn)如(UserDTO)

if (e instanceof BindException || e instanceof MethodArgumentNotValidException || e instanceof IllegalArgumentException) {

log.error("參數(shù)校驗(yàn)失敗:{}", e);

return ResponseEntity.status(ExceptionEnum.PARAMS_VALIDATE_FAIL.value())

.body(new ExceptionResult(ExceptionEnum.PARAMS_VALIDATE_FAIL));

}

//方法上參數(shù)校驗(yàn)失敗

if (e instanceof ConstraintViolationException) {

ConstraintViolationException ex = (ConstraintViolationException) e;

Map res = new HashMap<>(16);

res.put("status", HttpStatus.BAD_REQUEST.value());

res.put("message", ex.getMessage());

res.put("timestamp", System.currentTimeMillis());

return ResponseEntity.status(HttpStatus.BAD_REQUEST.value()).body(res);

}

log.error("服務(wù)器內(nèi)部異常:{}", e);

/*

* 響應(yīng)的狀態(tài)碼,為枚舉中定義的狀態(tài)碼

*/

return ResponseEntity.status(ExceptionEnum.BUSINESS_DEAL_FAIL.value())

.body(new ExceptionResult(ExceptionEnum.BUSINESS_DEAL_FAIL));

}

}

value 對應(yīng)響應(yīng)狀態(tài)碼

message 錯(cuò)誤描述

@NoArgsConstructor

@AllArgsConstructor

public enum ExceptionEnum {

/**

*

*/

PARAMS_VALIDATE_FAIL(400, "'參數(shù)校驗(yàn)失敗"),

BUSINESS_DEAL_FAIL(500, "'業(yè)務(wù)處理失敗");

/**

* 響應(yīng)狀態(tài)碼

*/

int value;

/**

* 響應(yīng)描述

*/

String message;

public int value() {

return this.value;

}

public String message() {

return this.message;

}

}

參數(shù)錯(cuò)誤對應(yīng)400狀態(tài)碼

3.遵循嚴(yán)格的pojo,vo,dto(來自阿里java規(guī)范)

4.建議提倡使用lomback(讓你的代碼,更加簡潔,干凈)

5.對于日志記錄采用@Slf4j

以前可能是:

private static final Logger logger = LoggerFactory.getLogger(MeetingInfoController.class);

6.對于響應(yīng)采用ResponseEntity,Spring已經(jīng)封裝好的,在一定程度上是能滿足業(yè)務(wù)場景的

@PostMapping

public ResponseEntity save(@Valid @RequestBody UserDTO userDTO) {

userService.insert(userDTO);

return ResponseEntity.ok().build();

}

7.RESTful API對應(yīng)以下Spring請求注解

@GetMapping 查詢

@PostMapping 新增

@PutMapping 修改

@DeleteMapping 刪除

8.進(jìn)行必要的參數(shù)校驗(yàn),新增參數(shù)校驗(yàn),普通查詢也有必要,如分頁查詢pageSize不做限制可能導(dǎo)致數(shù)據(jù)查詢異常或慢查詢

9.建議直接只用框架自帶封裝好的API,如RedisTemplate,RabbitTemplate,KafkaTemplate(自己寫的通用的可能某些地方考慮不全)

10.使用注解事務(wù)@Transactional

import org.springframework.transaction.annotation.Transactional;

//spring的注解不是java注解

軟件架構(gòu)

軟件架構(gòu)說明

安裝教程

xxxx

xxxx

xxxx

使用說明

xxxx

xxxx

xxxx

參與貢獻(xiàn)

Fork 本倉庫

新建 Feat_xxx 分支

提交代碼

新建 Pull Request

碼云特技

使用 Readme_XXX.md 來支持不同的語言,例如 Readme_en.md, Readme_zh.md

GVP 全稱是碼云最有價(jià)值開源項(xiàng)目,是碼云綜合評定出的優(yōu)秀開源項(xiàng)目

總結(jié)

以上是生活随笔為你收集整理的boot返回码规范 spring_sprigboot-new-coding-standards的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一区二区视频在线 | 91成人入口 | 青青青国内视频在线观看软件 | 久久看片 | 国产a级精品| 亚洲一区,二区 | 成人一级网站 | 成人三级黄色片 | 图片区 小说区 区 亚洲五月 | 韩国av电影在线观看 | 久久久久亚洲av无码专区 | 91微拍| 秋霞影院一区二区 | 香蕉色网 | 久久av一区二区三 | 一极黄色大片 | 成年人免费观看视频网站 | 久久免费一区 | 特黄一区二区三区 | 一区亚洲 | 男女aa视频 | eeuss国产一区二区三区 | 色福利网 | 僵尸叔叔在线观看国语高清免费观看 | 99视频在线 | 欧美性受黑人性爽 | 成年人免费网站在线观看 | 一级特黄a大片免费 | 精品91av| 阿v天堂2017| 无码人妻精品一区二区三区夜夜嗨 | 亚洲一区av| 日韩成人av网 | 麻豆视频成人 | 国产女人高潮时对白 | 午夜性生活视频 | 91福利视频在线观看 | 天天躁日日躁狠狠躁av麻豆男男 | 午夜视频日韩 | 香蕉视频在线观看免费 | 亚洲人成网站999久久久综合 | sm国产在线调教视频 | 国产欧美一区二区三区四区 | 一区二区成人精品 | av午夜影院| 91插插插视频 | 色诱av| av这里只有精品 | 一本大道视频 | 99久久香蕉 | 国产精品美女在线 | 伊人伦理 | 国产 欧美 日本 | 一级大片视频 | 性一交一乱一伧国产女士spa | 亚洲黄色免费网站 | 美女啪啪网站 | 香蕉久久综合 | 亚洲骚| 极品色av| 亚洲欧美日韩在线不卡 | 亚洲 欧美 变态 另类 综合 | 久久综合鬼色 | 女女互磨互喷水高潮les呻吟 | 亚洲国产精品久久久久婷蜜芽 | 日韩中文字幕亚洲 | 国产综合视频在线 | 色爽| 91视频在线观看视频 | 男女午夜爽爽爽 | 字幕网在线 | 中文字字幕码一二三区 | 国产真实老熟女无套内射 | 日本三级日本三级日本三级极 | 亚洲欧美在线不卡 | 麻豆一区二区三区四区 | 久久久久国产精品人妻 | 91精品国产自产在线观看 | 久久久久久蜜桃 | 亚洲在线观看免费 | 三级色网| 国产香蕉视频 | 欧美高清免费 | 可以免费看的av | 印度午夜性春猛xxx交 | 色噜噜一区二区 | 天天艹天天 | 日韩一卡| 精品国产午夜福利在线观看 | 色老头在线一区二区三区 | 91影视在线观看 | 久在线观看 | 欧美色交 | 97久久人澡人人添人人爽 | 99视频免费| 欧美激情在线狂野欧美精品 | 麻豆视频传媒 | 枫可怜av | 欧美一二三视频 |