Spring Boot在企业开发中使用的很广泛,不同的企业有不同的开发规范和标准。但是有些标准都是一致的。

项目包结构

以下是一个项目常见的包结构

以上是一个项目的基本目录结构,不同的项目结构会有差异。在controller service等基础包中又可以根据业务功能进一步进行划分成多个子目录,以电商平台为例,controller层中又可以划分为admin business层。

一个良好的目录结构可以让项目可读性更好,且具有普适性。车同轨,书同文,规范化,统一化,无论对个人、企业还是行业的进步,都有强烈的推进作用。

返回数据格式

目前比较流行的开发方式是前后端分离,后台返回Json数据,前端对Json数据进行解析,然后渲染到前端页面。

在团队开发的过程中,需要规范返回的数据结构,有一些通用的状态数据,每个后台api接口都要返回。一般情况下,返回到前端的数据必须包含以下信息:状态码、状态信息、数据。

可以编写包装类来包装返回的数据

public class CommonData<T> {
private String message;
private String messageCode;
private boolean success = true; private T data; public CommonData() {
super();
} public CommonData(T data) {
super();
this.data = data;
} public T getData() {
return data;
} }

对于枚举类型通常需要转换为键值对的形式(如下),将枚举类型转换为一个Pojo类,然后进行序列化

public class KeyValue {
private String key;
private String value;
}

通用数据模型

一般而言在建Model时,会有一些通用的字段在每个Model中都是需要,可以建一个通用Model,其他Model继承这个通用Model,这些通用字段包括:主键Id、创建时间、更新时间、版本

import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.Version; import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener; @MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseModel { @Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected Long id; @CreatedDate
private Long createTimestamp; @LastModifiedDate
private Long updateTimestamp; @Version
private Long version;
}

Spring Boot学习笔记:项目开发中规范总结的更多相关文章

  1. Spring Boot学习笔记2——基本使用之最佳实践[z]

    前言 在上一篇文章Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用已经对Spring Boot的基本体系与基本使用进行了学习,本文主要目的是更加进一步的来说明对于Spring B ...

  2. Spring Boot 学习笔记(六) 整合 RESTful 参数传递

    Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...

  3. Spring Boot学习笔记---Spring Boot 基础及使用idea搭建项目

    最近一段时间一直在学习Spring Boot,刚进的一家公司也正好有用到这个技术.虽然一直在学习,但是还没有好好的总结,今天周末先简单总结一下基础知识,等有时间再慢慢学习总结吧. Spring Boo ...

  4. Java框架spring Boot学习笔记(二):Hello Spring Boot、以及项目属性配置

    新建一个新建一个SpringBootTest工程 新建一个HelloController.java文件 package com.example.demo; import org.springframe ...

  5. Spring Boot学习笔记——Spring Boot与MyBatis的集成(项目示例)

    1.准备数据库环境 # 创建数据库 CREATE DATABASE IF NOT EXISTS zifeiydb DEFAULT CHARSET utf8 COLLATE utf8_general_c ...

  6. Java框架spring Boot学习笔记(一):开始第一个项目

    新建一个项目,选择Spring initializr 修改group和项目名 添加依赖包Web,MongoDB 设置保存位置和工程名 新建一个test的文件 输入代码: package com.xxx ...

  7. spring boot学习笔记(二)创建spring boot项目

    用eclipse(需要用高版本,要不然弄不出来):new →Spring Sarter Project 用IDEA:一般默认 一般默认 入门级的先 剩下的一般默认... 一.项目至少有下面的东西,里面 ...

  8. Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用[z]

    前言 早在去年就简单的使用了一下Spring Boot,当时就被其便捷的功能所震惊.但是那是也没有深入的研究,随着其在业界被应用的越来越广泛,因此决定好好地深入学习一下,将自己的学习心得在此记录,本文 ...

  9. Spring Boot 学习笔记1---初体验之3分钟启动你的Web应用

    前言 早在去年就简单的使用了一下Spring Boot,当时就被其便捷的功能所震惊.但是那是也没有深入的研究,随着其在业界被应用的越来越广泛,因此决定好好地深入学习一下,将自己的学习心得在此记录,本文 ...

随机推荐

  1. 【Scheme】符号求导

    思路: 定义一个求导算法, 令其在抽象对象上执行求导操作. 可以由以下规约规则完成: dc/dx=0 dx/dx=1 d(u+v)/dx=du/dx+dv/dx d(uv)/dx=u(dv/dx)+v ...

  2. 第四章 栈与队列(c1)栈应用:进制转换

  3. LibreOJ 6285. 数列分块入门 9

    题目链接:https://loj.ac/problem/6285 其实一看到是离线,我就想用莫队算法来做,对所有询问进行分块,但是左右边界移动的时候,不会同时更新数字最多的数,只是后面线性的扫了一遍, ...

  4. Django项目之客户

    关于客户的操作 主页(被继承) {% load static %} <!DOCTYPE html> <html lang="en"> <head> ...

  5. UVA1588-Kickdown

    2018-10-30-18:27:03 原题链接 题目描述: 给出两个长度分别为n1,n2且每列高度只为1或2的长条,需要将它们放入一个高度为3的容器,求出能够容纳他们的最短容器长度. 本题思路: 模 ...

  6. 164. Maximum Gap (Array; sort)

    Given an unsorted array, find the maximum difference between the successive elements in its sorted f ...

  7. django的优缺点(非原创)

    Django 大包大揽,用它来快速开发一些 Web 应用是不错的.如果你顺着 Django 的设计哲学来,你会觉得 Django 很好用,越用越顺手:相反,你如果不能融入或接受 Django 的设计哲 ...

  8. Lua入门教程

    什么是Lua Lua 是一个小巧的脚本语言.是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Rober ...

  9. ASP.Net MVC 中a标签的onclick时间和href同时存在时候的处理

    问题出现: 本次项目在用到下载文件.导出文件的时候,需要在下载.导出之前进行判断,最初使用方式一.二,没能解决问题 方式一:使用href直接跳转controller方法,以下载为例: public A ...

  10. 并发编程中Future和Callable使用

    Future模式非常适合在处理很耗时很长的业务逻辑时进行使用,可以有效的减少系统的响应时间,提高系统的吞吐量. 看一个小的demo: 看一下执行结果: 这是异步去获取结果的示例,在子线程去处理任务的时 ...