基于Spring Boot构建应用开发规范

1.规范的意义和作用

  • 编码规范可以最大限度的提高团队开发的合作效率
  • 编码规范可以尽可能的减少一个软件的维护成本 , 并且几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护
  • 编码规范可以改善软件的可读性,可以让开发人员尽快而彻底地理解新的代码
  • 规范性编码还可以让开发人员养成好的编码习惯,甚至锻炼出更加严谨的思维

2.代码仓库规范

2.1公共组件

  • 公共组件通常指Java库,提供特定问题的处理程序包
  • 公共组件仓库地址:https://git.netposa.com/java-library-group
  • 公共组件的坐标命名规范
    • 分组编号:<groupId>com.company.library</groudId> 固定取值
    • 组件名称:<artifactId>name</artifactId> name根据组件名称定义
    • 组件版本:<version>x.y.z</versio> x.y.z根据组件实际版本情况定义

2.2服务组件

  • 服务组件通常指可以独立部署,运行,维护的服务程序包
  • 服务组件仓库地址:https://git.netposa.com/vias-microservice-group
  • 应用组件的坐标命名规范
    • 分组编号:<groupId>com.company.server</groudId>固定取值
    • 组件名称:<artifactId>name</artifactId> name根据组件名称定义
    • 组件版本:<version>x.y.z</versio> x.y.z根据组件实际版本情况定义

3开发环境规范

  • 开发环境:JDK1.7+
  • 开发工具:IntelliJ IDEA 2017(安装Lombok Plugin)
  • 构建工具:Maven3.x
  • 代码管理工具:Git /TortoiseGit

4.项目结构规范

4.1简述

一个项目对应代码仓库中的一个仓库,项目结构是指一个基于Maven创建的项目目录结构。公共组件项目,通常会创建一个Maven普通项目。服务组件项目,通常会创建一个Maven聚合项目,并在聚合项目目录下创建多个继承Maven聚合项目的Maven模块,它们一起作为服务组件项目的组成部分。

4.2项目名

  • 要求

    • 英文名称,作为仓库,项目,项目根目录,组件(公共组件,服务组件)的名称
    • 中文名称,用于代码仓库的描述
    • 项目名称和代码仓库的名称保持一致
  • 定义
    • 项目名称通常由团队负责人确定
  • 示例
<groupId>com.company.server</groupId>
<artifactId>data-warehouse-face</artifactId>
<version>1.0.0</version>

4.3模块命名

  • 要求

    • 模块名称:{项目名称}-{模块名称} 模块名称简洁体现职责
    • 模块名字作为模块组件的名称
  • 示例
  • 人脸数据仓库的数据接入模块名称:data-warehouse-face-access

4.4项目目录

  • 项目目录遵循Maven约定目录格式

4.5源码目录

  • 源码目录指:{项目目录}/src/main/
  • 打包定义目录:src/main/assembly
  • 代码目录:src/main/java
  • 资源目录:src/main/resources
    • /db:数据库脚本归档
    • /data:内部依赖数据归档
  • 文档目录:src/main/docs
  • 脚本目录:src/main/bin
    • run-manage.sh 运行管理脚本(通过参数start, stop, status, help info控制程序运行)
    • sh:服务组件启动脚本
    • sh:服务组件停止脚本

5.编码规范

5.1包规范

  • 项目基本包:com.company.{项目英文名(较长时适当简化)}.{模块名(可选)}
  • config:配置类
  • startup:与服务启动相关的类
  • client:提供客户端实现的相关类
  • common:公共类,定义常量类,组件
  • entity: 数据库相关的实体类
  • model:数据模型类(参数模型,数据传输模型等)
  • control:控制层接口
  • service: 服务层
  • dao:数据库访问层

5.2日志记录

  • 统一使用SLF4j接口

5.3异常处理

  • 运行时异常:通过参数检查等方式避免或抛出运行时异常,日志记录
  • 检查异常:检查异常需要捕获,处理,日志记录

5.4接口定义

  • 原则

    • 接口地址定义表明用意
    • 接口地址定义清晰,简洁,无歧义
    • 同一个服务组件的接口定义具有一致性
  • 格式
    • 控制类的顶层地址格式:/{顶层分类名},例如:/library 人员库相关接口的顶层地址
    • 接口定义使用Swagger的API注解说明
    • 标注完整的请求信息,请求方法,请求地址,参数可选性,接口描述
  • 请求方式
    • GET URL-Params
    • POST Form-Data
    • POST RequestBody(JSON格式)
    • POST Mulitpart
  • 响应方式
    • 统一的响应模型

5.5辅助工具

  • 字符串处理:apache common-lang3
  • 时间日期处理:joda-time
  • JSON处理:Gson,Fastjson
  • 集合扩展工具:guava
  • 文件和流处理:commons-io
  • 编解码:commons-codec
  • 建议:尽可能使用开源组件

5.6代码注释

  • 类,接口,枚举顶层注释
  • 接口方法注释
  • 静态方法注释
  • 公开方法注释
  • 类的属性字段注释
  • 常量注释
  • 不限于以上

6.代码控制规范

6.1拉取原则

  • 强制

    • 每日开始工作拉取
  • 约定
    • 提交之前拉取

6.2提交原则

  • 强制

    • 提交代码必须构建成功(比如:编译,打包成共)
    • 提交代码必须完整(比如:少提文件)
    • 提交代码必须忽略到本地临时文件(比如:target, logs, .idea, *.iml,dist 等)
  • 约定
    • 完成一个功能提交
    • 修改一个Bug修改提交
    • 解决冲突提交
    • 每日结束工作提交

6.3提交注释

  • 强制

    • 中文填写注释
    • 注释反映本次提交变更情况
  • 约定
    • 注释描述添加前缀,前缀如下
    • [创建] 通常在项目创建时使用
    • [新增]
    • [修改]
    • [删除]
    • [修复-number] 修复Bug使用,number是Bug编号

7.构建规范

7.1公共组件构建规范

  • 构建输出组件包
  • 构建输出组件源码包
  • 构建发布到公司私有仓库

7.2服务组件构建规范

  • 服务组件包命名:{组件名称}-{版本号}-bin.zip
  • 构建输出到工程根目录下的dist/{组件名称}-{yyyyMMddHH}目录

原文地址:http://blog.51cto.com/aiilive/2074260

时间: 2024-10-13 14:09:27

基于Spring Boot构建应用开发规范的相关文章

基于Spring Boot构建的Spring MVC快速入门

原文地址:http://tianmaying.com/tutorial/spring-mvc-quickstart 环境准备 一个称手的文本编辑器(例如Vim.Emacs.Sublime Text)或者IDE(Eclipse.Idea Intellij) Java环境(JDK 1.7或以上版本) Maven 3.0+(Eclipse和Idea IntelliJ内置,如果使用IDE并且不使用命令行工具可以不安装) 一个最简单的Web应用 使用Spring Boot框架可以大大加速Web应用的开发过

Spring Boot和JPA开发的一些坑

最近新的项目API接口基于Spring Boot和JPA开发,做了几天的学习和预研,发现使用Spring Boot开发效率上确实比较高,但也碰到了一些小坑,特别记录下. 配置文件问题 ,默认只要一个配置文件application.properties,不要再想ApplicationContent.xml等spring的配置文件了 logback配置文件路径问题,使用绝对路径读取没问题,基于classpath路径则读取不到 ,这个问题有待进一步解决 Spring-boot不能扫描到启动函数包外的b

基于Spring Boot+Cloud构建微云架构

前言 首先,最想说的是,当你要学习一套最新的技术时,官网的英文文档是学习的最佳渠道.因为网上流传的多数资料是官网翻译而来,很多描述的重点也都偏向于作者自身碰到的问题,这样就很容易让你理解和操作出现偏差,最开始我就进入了这样误区.官网的技术导读真的描述的很详细,虽然对于我们看英文很费劲,但如果英文不是很差,请选择沉下心去读,你一定能收获好多. 我的学习是先从Spring boot开始的,然后接触到微服务架构,当然,这一切最大的启迪还是感谢我的一个老师,是他给我指明了新的道路,让我眼前一亮,再次感谢

基于Spring Boot框架企业级应用系统开发全面实战

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者.    教程由浅入深,一步一步学习Spring Boot,最后学到的不单单是基础! 使用Spring Boot 进行Web 开发.数据访问.安全控制.批处理.异步消息.系统集

基于Spring Boot技术栈 博客系统企业级前后端实战 渐进式讲解+Thymeleaf+Elasticsearch+多种数据库

第1章 Spring Boot 简介讲解Spring Boot的项目背景,已经与其他技术框架(比如,Spring.SpringMVC.SpringCloud等)的关系.简单介绍下Spring Boot 整个生态系统1-1 _Spring Boot博客_课程导学1-2 -Spring Boot 是什么 第2章 开启 Spring Boot 的第一个 Web 项目通过 Spring Initializr 来快速初始化一个 Spring Boot 原型,方便学员来极速体验Spring Boot.本课程

使用Ratpack与Spring Boot构建高性能JVM微服务

在微服务天堂中Ratpack和Spring Boot是天造地设的一对.它们都是以开发者为中心的运行于JVM之上的web框架,侧重于生产率.效率以及轻量级部署.他们在服务程序的开发中带来了各自的好处.Ratpack通过一个高吞吐量.非阻塞式的web层提供了一个反应式编程模型,而且对应用程序结构的定义和HTTP请求过程提供了一个便利的处理程序链:Spring Boot集成了整个Spring生态系统,为应用程序提供了一种简单的方式来配置和启用组件.Ratpack和Spring Boot是构建原生支持计

使用Spring Boot构建微服务(文末福利)

本文主要内容 学习微服务的关键特征 了解微服务是如何适应云架构的 将业务领域分解成一组微服务 使用Spring Boot实现简单的微服务 掌握基于微服务架构构建应用程序的视角 学习什么时候不应该使用微服务 软件开发的历史充斥着大型开发项目崩溃的故事,这些项目可能投资了数百万美元.集中了行业里众多的顶尖人才.消耗了开发人员成千上万的工时,但从未给客户交付任何有价值的东西,最终由于其复杂性和负担而轰然倒塌. 这些庞大的项目倾向于遵循大型传统的瀑布开发方法,坚持在项目开始时界定应用的所有需求和设计.这

基于Spring Boot和Shiro的后台管理系统FEBS

FEBS是一个简单高效的后台权限管理系统.项目基础框架采用全新的Java Web开发框架 -- Spring Boot 2.0.3,消除了繁杂的XML配置,使得二次开发更为简单:数据访问层采用Mybatis,同时引入了通用Mapper和PageHelper插件,可快速高效的对单表进行增删改查操作,消除了大量传统XML配置SQL的代码:安全框架采用时下流行的Apache Shiro,可实现对按钮级别的权限控制:前端页面使用Bootstrap构建,主题风格为时下Google最新设计语言Materia

Spring Boot 企业级应用开发实战

Spring Boot 企业级应用开发实战[下载地址:https://pan.baidu.com/s/1SbB-auGkUN6r2i6dtv7t_w ] Spring Boot是目前Spring技术体系中炙手可热的框架之一,既可用于构建业务复杂的企业应用系统,也可以开发高性能和高吞吐量的互联网应用.Spring Boot框架降低了Spring技术体系的使用门槛,简化了Spring应用的搭建和开发过程,提供了流行的第三方开源技术的自动集成. Spring Boot是由Pivotal团队提供的全新框