admin 管理员组

文章数量: 1184232


2024年4月24日发(作者:数据库多对多关系怎么实现)

ISSN1009-3044

Computer

Knowledge

Knowledge

and

and

Technology

Technology

电脑知识

电脑知识

与技术

Computer

与技术

Vol.17,No.4

February

2021

E-mail:*************.cn

第17卷第4期(2021年2月)

http://

Tel:+86-551-6569

Springboot最小系统的设计与实现

江健锋,徐振平

(长江大学,湖北荆州434023)

摘要:Springboot是在Spring基础上衍生的实用性框架,其目的并不是要替代Spring,而是为了改变Spring框架中烦琐的配

置项而诞生。其特点是更好地和第三方库结合进行开发,减少大量的配置代码,达到开箱即用的目的。而Springboot的最

小系统架构,是在web开发环境中,把安全验证、数据交互、错误返回等web程序基本要素结合成一个架构系统,不随业务

内容改变。而当项目业务内容发生改变时,只需要在该最小系统的基础上,实现业务逻辑即可。

关键词:Java;Springboot;Mybatis;SpringSecurity;Json

中图分类号:TP311文献标识码:A

文章编号:1009-3044(2021)04-0062-02

开放科学(资源服务)标识码(OSID):

1引言

作为Apache基金的顶级项目,Springboot框架的提出是为

了解决传统Spring框架配置烦琐的问题,而且配备了一系列诸

如SQL、NoSQL数据库、分布式系统等开源项目作为扩展项,堪

称全家桶,是现在绝大多数互联网单系统或分布式系统的必备

框架。而传统的基于Springboot框架的系统只是对Spring全家

桶按需使用,没有明确规划,在后期会造成项目的结构混乱,例

如:返回数据不统一造成前后端联调复杂;缺乏全局错误处理,

错误日志复杂,定位问题变得困难。所以,为了排除不同项目

业务对系统造成的差异性,我们可以构建最小系统框架,方便

项目的拓建,并且给团队一个适应的编程规范。

2.2系统采用技术

2.2.1基础功能模块

如图2所示,对于基础功能模块来说,有三个功能是不可

或缺的,分别是安全验证,前后端数据交互,异常处理,下文将

对这个功能逐一说明。

2系统架构描述

2.1最小系统架构

如图1,绝大多数系统架构核心必须包含三大模块,与用户

相关的业务模块;连接底层的数据管理模块;以及用于中间协

调系统的基础功能模块;就企业级而非个人的项目来说,除了

业务模块不一样之外,基础模块在逻辑功能上是共通的。最小

系统架构,其实就是构建系统的安全功能,数据交互封装,全局

异常处理,数据库连接等模块功能,同时避免受业务逻辑的干

扰,成为脱离业务单独运行的系统。下文将对系统的三个模块

进行剖析。

图1应用框架模型图

1)全局异常处理

众所周知,用户的输入不可能完全按照程序员的意愿来进

行;同时,程序员无法对程序运行的各种情况考虑的面面俱到,

因此,运行时出现异常或者错误是很难避免的。如果把程序内

部响应的错误直接返回给用户,会给用户造成疑惑。综上,我

们应该对程序所有可能发生的错误都进行捕捉,把错误信息封

装,挑选用户能理解的部分进行返回,提高用户体验度,全局异

常处理就显得十分重要。

全局异常处理应用的是SpringMVC提供的组件增强注解

@ControllerAdvice,以及捕捉系统异常的注解@ExceptionHan⁃

dler来进行全局声明,对于不同的类型,可以返回不同的消息。

对应部分代码如下:

@ControllerAdvice

@Slf4j

publicclassGlobalExceptionHandler{

//捕获运行时异常

@ExceptionHandler()

@ResponseBody

publicJsonResulthandlerBusinessException(RuntimeExcep⁃

tionex){

图2基础功能模块

收稿日期:2020-10-20

62

软件设计开发

本栏目责任编辑:谢媛媛

第17卷第4期(2021年2月)

("

tackTrace();

错误:{}"Msg());

e(ex);

}

}

2

换格式,

JSON(JavaScript

)前后端数据封装

其简洁而又清晰的层次结构让其逐渐取代

ObjectNotation)是一种广泛应用的数据交

XML称为

spring-boot-starter-web

后端格式交互的主要格式

[1]

。在Springboot的核心jar包

后台进行请求的时候,可以设置返回的文本格式为

中,默认封装了JSON工具包,

JSON

当前端对

。但

是JSON简单清晰的特点只体现在数据传输方面,Springboot框

架并没有对返回的数据内容格式上做任何要求,

JSON

根据计算机网络传输的知识,

中,可以是一串文字,也可以是某种层次结构。

即返回的

我们知道,当系统正常运转

并返回时,计算机状态码为200;服务器内部执行错误状态码会

返回5xx来代表不同的错误状态。我们可以结合全局异常处理

的内容,不管用户传输给我们的数据是什么,只要程序能够接

收,http携带的状态码都返回200,我们可以把程序的错误或者

程序员自定义的错误内容封装到JSON中,所以我们必须有一

个代表状态码的code字段和中文解析message字段。除了错误

返回之外,程序必须能够正常执行并返回数据,返回数据的数

据是一个对象,

JSON

我们用data字段来表示。最终,前后端通用的

{

文本格式为。

code:

msg:

状态码(数字

data:

中文解析

}

程序返回的数据

(字符串

),

(

),

对象)

3

Security

本文使用的安全模块采用的是

)安全模块

的一员,

是一款企业级的权限认证授权框架,

SpringSecurity

和Springboot具有很好的契合性。同时,

作为

安全模型的结

Spring

框架,

全家桶

Spring⁃

构设计采用RBAC(Role-BasedAccessControl基于角色的访问

控制)模型设计。文献2通过提出一致性准则、安全性准则和可

用性准则分别证明了RBAC模型安全特性与该三项准则安全

特性相一致,证明了RBAC的可靠性

[2]

2.2.2数据管理模块

项目必须考虑后期的扩展性,而随着业务数据量的激增,

框架对数据的承受能力必须有很好的把握,或者说要有足够的

扩展性,在后期进行扩展。作为一个抽象的单系统,最小系统

架构来说,最大化地减少系统负担并且有足够的扩展性,都是

不可或缺的。图3是数据管理模块的抽象结构图,其中不包含

任何数据分析的模块,只做数据管理功能。

本栏目责任编辑:谢媛媛

ComputerKnowledgeandTechnology

电脑知识

与技术

1

图3数据管理模块

如图

)ORM

3所示,

框架

ORM(ObjectRelationalMapping,对象关系映

射)框架,用于实现面向对象语言里不同类型系统的数据之间

的转换

[3]

。在Java语言中,JDK(JavadevelopmentkitJava开发工

具包)提供了数据库映射数据的API,作为数据返还,ORM作为

框架接收;底层需要数据库驱动,为了提高数据库复用率,提高

系统吞吐率,我们可以使用数据库连接池来进行并发优化。

基于Java语言的开源ORM框架有Hibernate和Mybatis,前

者是全自动化的集成框架,包括数据映射,数据库建表,增删改

查语言的自动生成;而Mybatis则是一个半自动框架,提供了大

量接口供用户调用,这种半自动化给了用户很大的自由性,所

以最小系统框架选择使用

2

Mybatis框架。

著名的数据库连接池开源组件有

)数据库连接池

Druid,c3p0,dbcp。本系

统采用的数据库连接池是阿里开源的Druid,相比于其他两款

数据库连接池,Druid提供了强大的扩展和监控功能,在适应大

数据方面,容错率和性能上都相当的出色。

3总结

本文从框架的层面,分析和综合了绝大多数程序架构的特

点和共性,抽象化地提出了互联网应用最小系统架构的概念。

其特点是抽离了业务逻辑实现系统运行的最小化,同时保证了

系统的可扩展性。

参考文献:

[1]百度.JSON[EB/OL].[2020-05-24]./

[2]

item/JSON,2015-5-11.

熊厚仁,陈性元,张斌,等.基于RBAC的授权管理安全准则分

[3]

析与研究

baike.

百度.ORM

[J].计算机科学

对象关系

,2015,42(3):117-123.

映射

ORM&fromid=3583252&fr=aladdin.

/item对象关

[EB/OL].

系映射

[2020-05-24].

/311152?fromtitle=

【通联编辑:代影】

软件设计开发

63


本文标签: 系统 数据 框架