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

sprigboot-new-coding-standards

介绍

SpringBoot脚手架,遵守严格的代码规范。

规范详细说明

1.遵循标准RESTful API

2.异常采用枚举进行封装(业务内部异常往上抛,返回客户端需要将对应的异常转换为具体的状态的,这里介绍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 {

/**

* 具体业务层异常

*

* @param e 业务异常

* @return ResponseEntity

*/

@ExceptionHandler(ServiceException.class)

public ResponseEntity handleException(ServiceException e) {

/**

* 响应的状态码,为枚举中定义的状态码

*/

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

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

}

/**

* 业务处理未知异常

*

* @param e 异常

* @return ResponseEntity

*/

@ExceptionHandler(Exception.class)

public ResponseEntity> exceptionResultResponseEntity(Exception e) {

//所有参数异常

//在对象上绑定校验如(UserDTO)

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

log.error("参数校验失败:{}", e);

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

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

}

//方法上参数校验失败

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("服务器内部异常:{}", e);

/*

* 响应的状态码,为枚举中定义的状态码

*/

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

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

}

}

value 对应响应状态码

message 错误描述

@NoArgsConstructor

@AllArgsConstructor

public enum ExceptionEnum {

/**

*

*/

PARAMS_VALIDATE_FAIL(400, "'参数校验失败"),

BUSINESS_DEAL_FAIL(500, "'业务处理失败");

/**

* 响应状态码

*/

int value;

/**

* 响应描述

*/

String message;

public int value() {

return this.value;

}

public String message() {

return this.message;

}

}

参数错误对应400状态码

3.遵循严格的pojo,vo,dto(来自阿里java规范)

4.建议提倡使用lomback(让你的代码,更加简洁,干净)

5.对于日志记录采用@Slf4j

以前可能是:

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

6.对于响应采用ResponseEntity,Spring已经封装好的,在一定程度上是能满足业务场景的

@PostMapping

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

userService.insert(userDTO);

return ResponseEntity.ok().build();

}

7.RESTful API对应以下Spring请求注解

@GetMapping 查询

@PostMapping 新增

@PutMapping 修改

@DeleteMapping 删除

8.进行必要的参数校验,新增参数校验,普通查询也有必要,如分页查询pageSize不做限制可能导致数据查询异常或慢查询

9.建议直接只用框架自带封装好的API,如RedisTemplate,RabbitTemplate,KafkaTemplate(自己写的通用的可能某些地方考虑不全)

10.使用注解事务@Transactional

import org.springframework.transaction.annotation.Transactional;

//spring的注解不是java注解

软件架构

软件架构说明

安装教程

xxxx

xxxx

xxxx

使用说明

xxxx

xxxx

xxxx

参与贡献

Fork 本仓库

新建 Feat_xxx 分支

提交代码

新建 Pull Request

码云特技

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

GVP 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第四周读书笔记《构建之法》

第四周读书笔记《构建之法》 第四周读书笔记《构建之法》 沈三景 PB15061249 软件工程 读书笔记 前言 本周接着读了构建之法&#xff08;上周读了《程序员的修炼之道》&#xff09;的第六、七两个章节。 第六章 敏捷流程 敏捷流程是一系列价值观方法论的集合&#xff0c;它要求…

幼小衔接语言教案上c册_关于幼小衔接,这里有你最想要的解答

相信很多家长都会发现&#xff0c;在孩子即将步入小学的前一年或者半年左右&#xff0c;身边同龄的孩子有一部分会放弃大班的学习&#xff0c;转而去幼小衔接班了。就算平时再佛系的妈妈&#xff0c;内心也会焦虑&#xff0c;产生疑问&#xff1a;到底要不要上幼小衔接班&#…

每日一题20180330-Linux

一、问题 1.1 统计/var/log/下所有文件个数 1.2 查找出/var/log目录下面修改时间是7天以前&#xff0c;大小在50k到2M之间&#xff0c;并以.log结尾的文件把这些文件复制到/data目录中 1.3 设置一条Iptables规则&#xff0c;允许192.168.10.0段访问873端口&#xff1f; 二、答案…

前台文件_欧木瑾怎么定制办公前台?

前台是一个反映公司整体形象的地方。这是给客户和商业伙伴留下印象的第一个地方。因此&#xff0c;芜湖绿木家具有限公司欧木瑾小编说公司的前台装修不能马虎。前台的设计风格与材料的使用有很大关系。从细节上看&#xff0c;这是材料的精美运用。这里是如何设计一个好的前台。…

常用的魔术方法

__construct() 实例化类时自动调用。__destruct() 类对象使用结束时自动调用。__set() 在给未定义的属性赋值的时候调用。__get() 调用未定义的属性时候调用。__isset() 使用isset()或empty()函数时候会调用。__unset() 使用unset()时候会调用。__sleep() 使用serialize序列化时…

单纯形法只有两个约束条件_10分钟掌握对偶单纯形法

只听名字的话会感觉对偶单纯形法和对偶问题关系很大&#xff0c;其实不然(想要了解对偶问题的话可以看我之前的文章)。对偶单纯形法在我看来和大M法以及两阶段法很像&#xff0c;都是用来补充纯粹的单纯形法无法解决特殊问题的缺陷。而且对偶单纯形法更加“强大”&#xff0c;因…

linix防火墙设置之顺序设置问题 -- 解决防火墙规则顺序和插入规则到指定序号的问题...

转载于百度经验&#xff1a;https://jingyan.baidu.com/article/ae97a646ce58c2bbfd461d90.html 无论是硬件防火墙还是软件防火墙都会有一个规则序列的问题&#xff0c;规则顺序会影响到规则的生效情况&#xff0c;所以这个必须得注意&#xff0c;下面小编与大家分享一下如何注…

fir fpga 不同截止频率_学习FPGA将来的出路在哪里?

1. 在国内 FPGA 最大的应用市场还是通信类&#xff0c;几大厂商的重要收入来源还是华为、中兴、阿朗等&#xff0c;基本上可以直接呼叫原厂 AE 上门支持那种。算法类&#xff08;如各种 FIR&#xff09;、接口类&#xff08;如 CPRI、Interlaken、XAUI、PCIE、GE、SRIO 等&…

grep 正则表达

常见的 grep 正则表达参数 -c # 显示匹配到得行的数目&#xff0c;不显示内容 -h # 不显示文件名 -i # 忽略大小写 -l # 只列出匹配行所在文件的文件名 -n # 在每一行中加上相对行号 -s # 无声操作只显示报错&#xff0c;检查退出状态 -v # 反向查找 -e …

office 打开wps乱_为什么word文档用wps打开,格式乱了

出现乱码的原因如下&#xff1a;1. 版本不同&#xff0c;往往高版本能打开低版本的&#xff0c;但低版本打开高版本就会出错2. 文档损坏 解决办法是直接重新下载该文件&#xff0c;再次打开&#xff0c;如果还是乱码则可以排除这种可能&#xff1b;3. 低版本打开高版本&#x…

Ubuntu安装完后设置root密码

安装完Ubuntu 14.04后默认是没有主动设置root密码的&#xff0c;也就无法进入根用户。 相关阅读&#xff1a; Ubuntu 14.04 下载、安装、配置 整理汇总 页面 http://www.linuxidc.com/Linux/2014-04/100370.htm Windows 7下硬盘安装Ubuntu 14.04永久更新地址&#xff1a; http:…

js 中转换成list集合_程序员:java集合介绍-List,具说很详细,你不来看看?

Java集合介绍作为一个程序猿&#xff0c;Java集合类可以说是我们在工作中运用最多、最频繁的类。相比于数组(Array)来说&#xff0c;集合类的长度可变&#xff0c;更加方便开发。Java集合就像一个容器&#xff0c;可以存储任何类型的数据&#xff0c;也可以结合泛型来存储具体的…

VUE 使用中踩过的坑

vue如今可谓是一匹黑马&#xff0c;github star数已居第一位&#xff01;前端开发对于vue的使用已经越来越多&#xff0c;它的优点就不做介绍了&#xff0c;本篇是我对vue使用过程中以及对一些社区朋友提问我的问题中做的一些总结&#xff0c;帮助大家踩坑。如果喜欢的话可以点…

c++ 圆上任意点坐标计算_线性代数总结 第三章 向量代数与几何计算(空间平面和直线)...

我的公众号“每日晴天”&#xff0c;可关注领取我的笔记pdf版哦~------------------------------------------------------------------------------一、向量1、简单的高中那些就不说了....2、左右手系&#xff1a;右手系&#xff1a;将右手四指&#xff08;拇指除外&#xff0…

[poj3321]Apple Tree_dfs序_树状数组

Apple Tree poj-3321 题目大意&#xff1a;给你一个根固定的树&#xff0c;每一个点的点权是0或1&#xff0c;查询子树点权和。 注释&#xff1a;$1\le n \le 10^5$。 想法&#xff1a;刚刚学习dfs序&#xff0c;刷到水题偶哈哈。 什么是dfs序&#xff1f;就是在遍历树的时候记…

axure实现搜索功能_vue实现模糊搜索功能

首先写好一个列表写好的样式是这样滴操作来了在computed里面定义了一个search函数 使用filter过滤接下来在method 里面写一个sousuo1函数 进行一个判断 如果搜索这个输入框框里是空 就是展示原数据 如果这个不为空 就会展示搜索到的数据最后 很重要把list改为sousuo1()这个函数…

HOSTNAME问题 和yum配置163源的操作 安装lsb_release,KSH,CSH

HOSTNAME 在 /etc/hosts 里添加一行 127.0.0.1 yourhostname yum配置 来自http://www.cnblogs.com/wutengbiao/p/4188986.html 下载方法1&#xff1a; cd /etc/yum.repos.d/wget http://mirrors.163.com/.help/CentOS6-Base-163.repovi CentOS6-Base-163.repo 把文件里面的$rel…

开机自启动脚本_使用xtu降低笔记本(游戏本)cpu电压及功耗·游戏本延时(以及试着解决开机自启动的问题)...

&#xff08;额&#xff0c;这应该是我的第一篇真正意义上的博客吧&#xff08;&#xff1f;&#xff09;&#xff0c;虽然是发在了知乎上&#xff0c;上个月忙了一个月的建站方面的事情&#xff0c;但是服务器买在了国内&#xff0c;昂&#xff0c;然后就没了&#xff09;为什…

7000更换控制器电源步骤_开关电源控制环路(初级篇:上)

本文是 21Dianyuan 社区原创技术文章&#xff0c;作者 ctus220&#xff0c;感谢作者的辛苦付出。内容目录&#xff1a;1、环路和直流稳压电源的关系2、与环路相关的基本概念波特图&#xff0c;环路稳定性判据&#xff0c;传递函数&#xff0c;零极点3、常用的补偿控制器PI&…

thymeleaf 模板语言简介

参考网址: https://blog.csdn.net/mlin_123/article/details/51816533 1.1 Thymeleaf 在有网络和无网络的环境下皆可运行&#xff0c;而且完全不需启动WEB应用&#xff0c;即它可以让美工在浏览器查看页面的静态效果&#xff0c;也可以让程序员在服务器查看带数据的动态页面效果…