【项目总结】项目开发规范-精品文档资料整理.docx
《【项目总结】项目开发规范-精品文档资料整理.docx》由会员分享,可在线阅读,更多相关《【项目总结】项目开发规范-精品文档资料整理.docx(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【项目总结】项目开发规范4.4怎样使用Http状态码以及自定义code 在出现Http状态码使用的情况时 推荐使用Http状态码 表述业务状态。自定义code假如没有特殊含义 同时遵循 状态 200除外 。业务状态码统一使用自定义code表述 状态码使用200 5.接口访问权限 开发阶段接口不明确其访问权限 将接口设置为匿名接口。即接口添加注解 AnonymousAccess在得知接口的访问权限时 添加权限注解 PreAuthorize( permissions.check( admin ) )工程测试/上线前 审查所有接口的访问权限是否对应。尤其是去掉不必要的匿名接口标识 Anonymous
2、Access 二、异常处理标准 1.使用异常处理的方式 暂定 throw new BadRequestException(String msg);throw new BadRequestException(HttpStatus status,String msg); 2.什么是使用异常处理 接口业务逻辑 有出错的风险的都建议进展异常处理。比方查询返回集合数据为空 异常的入参方式 总的来讲 只要有出错风险或是不符合要求的情况下 提早做好业务的异常处理 三、事务标准 1.什么时候使用事务 只要有多条 大于等于2条 对数据库增删改操作的接口强迫添加数据库事务处理事务控制在Service层的方法添加
3、Transactional(rollbackFor Exception.class) MybatisPlus假如直接使用service的数据库操作方法 在controller也需要添加 Transactional(rollbackFor Exception.class) 四、日志标准 1.什么时候使用日志 一般在使用异常处理的使用 同时记录日志 日志级别warn/error 在进展接口操作 业务处理 时使用日志记录 info/warn 2.怎样使用日志记录 使用lombok提供的快速日志操作。在类上添加 Slfj注解 在业务中直接使用log.info/warn/error(“记录日志)。 日志
4、记录格式 log.日志级别( 【业务名】详细业务操作信息 ) 例如 log.info( 【修改用户】userId userId);log.error( 【修改用户失败】userId userId); 3.日志文件生成 日志文件在工程根目录下生成 跟工程走 以logs命名以每天每小时生成一个日志文件命名为server.log.%dyyyy-MM-dd-HH 五、文件夹构造标准 1.在指定的package下开发 业务逻辑代码一般放在system模块的modules下 2 mon模块尽量封装在任何工程 任何模块都有可能使用的通用方法以及工具类。 假如代码在不同的工程/模块可能不一样 尽量不要封装在c
5、ommon模块中 3.文件夹构造 -common 通用模块-system 核心业务模块-tool 第三方工具模块 4.通用文件夹构造 -modules-业务模块名-api-controller-service-impl(service实现类的包)-mapper(mybatis统一使用)/dao-entity(统一使用)/domain-bo-vo-dto-config-utils 六、Mybatis/MybatisPlus标准 1.联表查询使用注解 写联表查询 及非单表操作时 推荐在mapper层使用注解写sql 而不是使用xml来写 会产生大量的xml文件 。 推荐参考博客 2.条件构造器的使
6、用 在使用条件构造器Wrapper时 强烈推荐使用其Lambda语法 这样使用的好处是 不用以数据库字段为条件 而是以JavaBean的getter、setter方法为条件 与数据库解耦 增强其可读性以及可维护性 Lambda语法使用方式一 使用LambdaQueryWrapper、LambdaUpdateWrapper 直接使用Lambda语法Lambda语法使用方式二 使用QueryWrapper、UpdateWrapper的lambda()方法 使用其Lambda语法 3.自定义属性注入 使用自定义属性注入维护createTime、updateTime、createBy、updateBy
7、等 需要注意在使用MybatisPlus提供的方法会维护 但是使用注解手撸sql时并不能维护。所以在使用注解手写sql时 不要忘记了维护createTime、updateTime、createBy、updateBy等数据。 4.逻辑删除 逻辑删除字段在yml文件中配置 数据库统一好逻辑删除字段 推荐使用is_deleted 不能使用is_delete 转Javabean去掉is delete为mysql关键字 逻辑删除推荐使用0为未删除 1为逻辑删除 并且数据库设置默认值为0手写sql 即在mapper类中写的sql语句 在做SELECT、UPDATE操作时需要维护is_deleted统一使用
8、逻辑删除 暂定包括中间表 所有删除操作 手写sql全部使用UPDATE 将is_deleted改为1. 5.MybatisPlus代码生成 代码生成时间类型默认为Java8数据格式LocalDateTime代码生成推荐开放ActiveRecord形式 setActiveRecord(true) 实体类会继承Model接口推荐JavaBean支持链式操作 setChainModel(true) 并且移除is前缀 setEntityBooleanColumnRemoveIsPrefix(true) 6.业务逻辑写在service层 还是写在controller层 因为MybatisPlus支持se
9、rvice直接操作数据库 而且比mapper层提供的方法更加丰富 所以业务逻辑写在service层 还是写在controller层 是个值得考虑的问题。推荐根据以下情况决定 业务逻辑写在哪里 假如业务逻辑比拟简单 只有很少的代码量 推荐业务逻辑写在controller层假如业务逻辑比拟复杂 有大量的逻辑判断以及代码 推荐将业务逻辑写在service层。并将方法拆分进展封装 暴露给controller的方法声明为public 其余方法声明为private 只提供应本service类使用假如需要在mapper层手写sql 调用其mapper方法 那么 强迫 使其业务逻辑方法写在service层 七
10、、Java开发业务标准 1.阿里巴巴Java开发手册以及IDEA阿里巴巴代码检查插件 推荐开发前看阿里巴巴Java开发手册 并在IDEA中下载阿里巴巴代码检查插件 养成习惯 写出及标准又优美的代码 2.推荐枚举类enum的使用 数据库tinyint类型数据的判断 在Java中推荐封装枚举类进展判断业务逻辑if判断 假如判断条件比拟多 推荐使用枚举类判断 3.文件上传/下载标准 文件上传位置跟工程走 在工程根目录下建立upload文件夹文件命名推荐添加uuid作为内容之一 防止文件命名重复导致异常文件、上传都要走平安框架 需要做权限控制 文件阅读/下载不能直接访问 需要走接口 进展权限控制 4.
11、工具类封装 工具类位置 推荐封装在utils下 通用工具类封装在common模块下以及某个模块相关业务的工具类 封装在相关模块下 工具类推荐封装成static静态方法 有的不能不强求 比方需要bean注册 5.配置类 配置类位置 推荐封装在config下 通用配置类封装在common模块下以及某个模块相关业务的配置类 封装在相关模块下 配置类使用配置方式 推荐使用Java配置类 不推荐使用xml配置 日志配置除外 推荐配置参数写在yml中进展读取 大量的配置读取 推荐写Properties类。可以省去大量属性的 Value读取 Data Configuration /表示为配置类 注册到spr
12、ing bean容器中 ConfigurationProperties(prefix jwt ) /读取的yml配置的公共前缀public class SecurityProperties 6.SpringBoot SpringBoot推荐使用2.1.0.RELEASE版本 屡次使用稳定版本 暂未发现异常 AppRun推荐放置在根包下 一般要进展各种扫描 假如不这样防止 可能会出现扫描不到的错误 主要由 SpringBootApplication注解引起 推荐配置类使用yml文件 更好的层级构造 推荐配置开发环境、测试环境、生成环境的配置文件。在不同环境下使用不同的配置文件 7.注释标准 所有
13、class、interface、enum等强迫在类头部加注释 注释方式 javadoc注释 注释内容 功能描绘 description 作者 author 日期 Date 注释模板 /* * description:对返回前端数据进展封装 * author RenShiWei * Date: 2020/7/9 22:09 Datapublic class ResponseResult T 所有成员变量 推荐添加注释 注释方式 javadoc注释 注释模板 /* 方式一 * 状态码private Integer code;/* 方式二 状态信息讲明 */private String messag
14、e; 所有方法 强迫添加注释 注释内容 功能描绘 description 参数信息 param 返回值信息 return 作者 author 推荐 可知道方法谁写的 方便维护 日期 Date 推荐 可知道方法大致是在什么时候写的 注释模板 /* * description: 接口调用成功 返回枚举中自定义的状态码及数据 * param responseEnum 自定义枚举 状态码以及信息 * param data 返回数据 * return 枚举中自定义的状态码及数据 * author RenShiWei * Date: 2020/7/10 19:57public static E Respo
15、nseResult E ok ( ResponseEnum responseEnum, E data ) return new ResponseResult (responseEnum, data); swagger注释 一般在controller 假如有swagger 可不写javadoc注释 注释内容 参数 注释模板 /* * 根据主键id查询一条部门表信息 * param id 部门表ID * return 部门表信息 * author RenShiWei * since 2020-08-06 GetMapping( /id ) ApiOperation(value 查询一条部门表信息
16、, notes 根据主键id查询 n author RenShiWei ) ApiImplicitParam(name id , value 部门表id , paramType path )public ResponseResult Dept deptFindById ( PathVariable Long id ) Dept dept iDeptService.getById(id); if (ObjectUtil.isNull(dept) log.error( 【查看部门表失败 ); return ResponseResult.ok(ResponseEnum.DATA_NOT_FOUND)
17、; return ResponseResult.ok(dept); 注释标准 假如途径中有 “/id类似这样的参数 并且在参数前使用 PathVariable注解 那么在swagger中 ApiImplicitParam 需要将paramType设置为 path 。参数都必须加 ApiImplicitParam注解 包含name以及value paramType选填接口方法加 ApiOperation注解 包含value以及notes。note写上作者信息 方便在swagger中得知接口是谁写的。 业务注释 业务中多写注释 方便开发以及维护 养成良好习惯一块业务使用块级注释一行代码使用行级注释
18、 八、第三方依赖标准 1.第三方依赖的引入标准 强迫不推荐随意引入第三方依赖。引入依赖前需要经过比照以及调研 并且知晓其优缺点同一项技术 强烈建议统一使用同一项技术。保持标准以及一致 进步代码的可读性以及可维护性 同时减少依赖的引入 降低工程的冗余。引入第三方依赖 推荐引入其稳定版本。防止第三方依赖出现未知异常。大多数时候 最新版本 并不一定是最好的。 2.Java工具包推荐使用依赖 Java第三方工具包推荐使用hutool。轻量级 根本涵盖Java开发80%以上的工具类。官方文档JSON序列化也推荐使用hutool下的json处理 九、Maven标准 1.pom文件标准 SpingBoot提
19、早规定好父版本 parent groupId org.springframework.boot /groupId artifactId spring-boot-starter-parent /artifactId version 2.1.0.RELEASE /version /parent jar引入标准 jar包版本统一在下定义 使用时$lombok.version。方便统一管理所有jar包版本下定义 project.build.sourceEncoding 以及 project.reporting.outputEncoding 为UTF-8 java.version 为1.8假如是分模块开
20、发在父工程的pom文件中先使用锁定jar包版本 在需要的时候引入jar包。防止jar包在不需要的模块中引入 造成冗余。 假如不想某个引来会发生依赖传递 设置当前依赖true properties project.build.sourceEncoding UTF-8 /project.build.sourceEncoding project.reporting.outputEncoding UTF-8 /project.reporting.outputEncoding java.version 1.8 /java.version hutool.version 5.2.5 /hutool.vers
21、ion lombok.version 1.18.8 /lombok.version /properties !- 锁定jar包版本 - dependencyManagement dependencies !- hutool的java开发工具包 - dependency groupId cn.hutool /groupId artifactId hutool-all /artifactId version $hutool.version /version /dependency !-lombok插件- dependency groupId org.projectlombok /groupId a
22、rtifactId lombok /artifactId version $lombok.version /version optional true /optional /dependency /dependencies /dependencyManagement 在要打jar的模块下添加如下插件 最好不要在父工程添加 可能造成打包异常 build plugins !- spring-boot插件 - plugin groupId org.springframework.boot /groupId artifactId spring-boot-maven-plugin /artifactId
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目总结 项目 总结 开发 规范 精品 文档 资料 整理
限制150内