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. springboot org.hibernate.MappingException: No Dialect mapping for JDBC type: -9

    参考 https://www.cnblogs.com/luxd/p/8316243.html https://www.cnblogs.com/s648667069/p/6478559.html @Co ...

  2. Redis备份及回收策略

    Redis备份(持久化) Redis备份存在两种方式: 1.一种是"RDB".是快照(snapshotting),它是备份当前瞬间Redis在内存中的数据记录; 2.另一种是&qu ...

  3. 获取标签as3.0

    import flash.utils.Timer; import flash.events.TimerEvent; var time:Timer=new Timer(25); time.addEven ...

  4. python基础入门学习2

    python 整体注释:选中所有然后CTRL+? 运算符 + - * /   **  %  // 布尔值 true 真  False 假 !=不等于 <>不等于 算数运算,赋值运算,比较运 ...

  5. 最小生成树算法(krustra+prime)

    给你一个图,求让图连通的边权和最小值 krustra算法是基于加边法,将所有边权排序,每次加一条边,将两个点放在同一个集合中.如果新加的点不在同一个集合中,就合并(并查集) 涉及到排序,可以用结构体存 ...

  6. Codeforces Beta Round #67 (Div. 2)

    Codeforces Beta Round #67 (Div. 2) http://codeforces.com/contest/75 A #include<bits/stdc++.h> ...

  7. SOA与微服务的区别

    乍一看: 1.SOA更抽象. 2. SOA是拆分服务后,用ECS等手段,将服务组合调度. 微服务则是拆分服务后组合成各种业务. https://blog.csdn.net/HeatDeath/arti ...

  8. Visual Studio 2015 自动生成 的大文件xxx.vc.db的删除问题

    用vs2015创建Visual C++项目,编写生成后,每次都会生成一个project_name.VC.db文件,而且会随着你工程修改运行变的越来越大. project_name.VC.db是sqli ...

  9. node.js中事件触发器events的使用

    node.js是基于事件驱动的,通过events,我们可以方便的创建事件,并通过触发事件来调用我们自定义的监听函数. 所有能触发事件的对象都应该是 EventEmitter 类的实例,一般我们自定义一 ...

  10. 基于RBAC权限验证, 中间价middleware实现, views 登录视图代码

    废话不多说  上代码: 基础实现: rom django.shortcuts import HttpResponse, redirect, render from django.http import ...