CN112748908B - 基于SSM框架的Restful服务开发方法与装置 - Google Patents

基于SSM框架的Restful服务开发方法与装置 Download PDF

Info

Publication number
CN112748908B
CN112748908B CN202011642336.XA CN202011642336A CN112748908B CN 112748908 B CN112748908 B CN 112748908B CN 202011642336 A CN202011642336 A CN 202011642336A CN 112748908 B CN112748908 B CN 112748908B
Authority
CN
China
Prior art keywords
layer
module
service
code
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011642336.XA
Other languages
English (en)
Other versions
CN112748908A (zh
Inventor
庄广壬
陈建生
冼永乐
植挺生
刘勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Guangyu Technology Development Co Ltd
Original Assignee
Guangdong Guangyu Technology Development Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Guangyu Technology Development Co Ltd filed Critical Guangdong Guangyu Technology Development Co Ltd
Priority to CN202011642336.XA priority Critical patent/CN112748908B/zh
Publication of CN112748908A publication Critical patent/CN112748908A/zh
Application granted granted Critical
Publication of CN112748908B publication Critical patent/CN112748908B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于SSM框架的Restful服务开发方法与装置,该方法包括:定义通讯协议及格式、数据验证、异常处理、基础控制实现类、基础服务接口与实现类,实现控制层、服务层、持久层之间的调用逻辑,数据模型与功能模块之间的对应关系;封装数据及工具;定义目标代码文件的模板文件,根据模板文件生成代码文件,生成数据模型和持久层代码;根据基础模块、工具模块和代码生成模块实现功能管理,自动生成配置文件,数据模型、持久层的代码,以及服务层、控制层代码,在数据模型字段添加基本数据验证,修改服务层的查询条件,根据各功能管理不同的需求分别修改对应功能管理的接口。本发明提高应用服务的开发、维护效率,降低应用服务开发门槛。

Description

基于SSM框架的Restful服务开发方法与装置
技术领域
本发明涉及网络服务开发设计技术领域,具体涉及一种基于SSM框架的Restful服务开发方法与装置。
背景技术
软件系统随着业务的发展,变得越来越复杂,不同领域的业务所涉及到的知识、内容、问题非常非常多。如果每次都从头开发,那都是一个很漫长的事情,且并不一定能将它做好。因此,使用框架进行极速开发,是一种软件开发中极其常用的方案。
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成,常作为数据源较简单的web项目的框架。使用SSM框架开发Web应用,Spring其核心是控制反转IOC(Inversion of Control)和面向切面编程AOP(Aspect OrientedProgramming)。IOC使得代码复用,可维护性大大提高,AOP提供切面编程,同时也增加了生成力,但是其繁琐的配置,各种XML、Annotation配置,让人眼花缭乱,而且如果出错了也很难找出原因。另一方面,SSM框架本身只是一个脚手架,并没有对业务模块做任务实现。然而在众多系统开发中,往往会有一些比较常用的功能模块,例如用户信息、角色权限、系统菜单、用户日志、文件信息、数据字典等功能模块,而开发这些功能模块的工作量约占整个项目的10%~30%。每个项目都从头开发的话,造成重复开发、人力资源浪费。
Restful是一种网络应用程序的设计风格和开发方式,基于HTTP可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
SSM框架开发技术基本上满足Restful服务开发的要求,但在使用上同时也存在封装不足的问题,譬如:1、Spring的插件众多,同一个功能实现都有不同的插件可供选择,因此在选用插件的时候就必须对插件的功用、性能、优缺点、使用方法进行学习,这无疑需要程序员花费大量时间翻查相关文档以及封装相关代码;2、Spring的配置项,各个版本可能存在不一样,导致相同的配置文件可能在不同的项目中无法生效,而这种问题又是比较难发现的;3、Mybatis的优点在于灵活与高性能的sql语句,但是缺点同样明显,那就是不支持随意切换数据库,移植性不好;4、对于MVC三层结构的系统,控制层、服务层、持久层代码编写的自由较高,这个是优点,但同样是缺点,基本上每个程序员编写的代码结构都可能不一致。这会对系统后期维护工作造成困难;5、框架中的常用工具包缺少,不能满足应用服务的开发需求,需要各自另外选用第三方工具类库。6、缺少代码生成功能,虽然Mybatis可以自动生成模型、持久层的代码,但是缺少生成控制层、持久层的代码,忽略业务逻辑,这两层的代码结构应该是一致的,若手工编写相关代码比较耗时;7、缺少通用的管理模块,例如用户信息、角色权限、系统菜单、用户日志、文件信息、数据字典、用户验证等,每个新项目都需要重新开发一次。
发明内容
为了克服现有技术存在的缺陷与不足,本发明提供一种基于SSM框架的Restful服务开发方法与装置,对SSM框架的集成进行二次封装,集成成为一个易用、高效、统一的Restful服务开发装置,解决框架集成过程中所引发的配置项、代码复用、代码结构以及框架技术使用等相关开发问题,从而提高应用服务的开发、维护效率,降低应用服务开发门槛。
为了达到上述目的,本发明采用以下技术方案:
本发明提供一种基于SSM框架的Restful服务开发方法,包括下述步骤:
构建基础模块,定义通讯协议、通讯格式、数据验证、异常处理、基础控制实现类、基础服务接口与实现类,实现控制层、服务层、持久层之间的调用逻辑,数据模型与功能模块之间的对应关系;
构建工具模块,封装数据及工具;
构建代码生成模块,定义目标代码文件的模板文件,根据模板文件生成代码文件,生成数据模型和持久层代码;
构建通用模块,所述通用模块根据基础模块、工具模块和代码生成模块实现功能管理,所述代码生成模块根据项目包名自动生成配置文件,根据数据库自动生成数据模型、持久层的代码,根据持久层代码自动生成服务层、控制层代码,在各个数据模型的字段上添加基本的数据验证,修改服务层的查询条件,根据各个功能管理不同的需求,按照控制层代码结构分别修改对应功能管理的接口。
作为优选的技术方案,所述通讯协议采用http/https协议,统一使用POST请求方式,指定访问令牌放到请求头中;
所述定义通讯格式具体包括:定义响应格式,统一使用JSON格式返回,并且限制返回字段;
所述数据验证具体包括:定义验证分组注解,提供给BEAN字段以及访问接口的声明式验证处理使用,定义验证工具类,提供给代码验证方式使用;
所述异常处理具体包括:利用Spring中的控制器增强技术,统一对未处理的异常进行请求响应;
所述基础控制实现类具体包括:以泛型的方式维护其对应的服务层对象、持久层类型、数据模型,以备被子类继承时,控制具体的功能模块与数据的对应关系,并实现增删查改;
所述基础服务接口与实现类具体包括:以泛型的方式维护其对应的持久层对象、数据模型,以备被子类继承时,控制具体的功能模块与数据的对应关系,并实现业务调用持久层的操作数据库。
作为优选的技术方案,所述封装数据及工具,具体包括封装基础操作工具、Excel子工具、文件拆分与合并工具、FTP工具;
所述Excel子工具使用poi技术,对第三方类库进行二次封装,分别实现Excel文件的写入、读取、模板填充的操作;
所述文件拆分与合并工具使用线程同时读取源文件,并行操作目标文件;
所述FTP工具定义客户端操作接口、客户端回调接口,过程监听接口,并实现FTP操作类,编写客户端操作接口的实现类,根据不同业务调用FTP操作类。
作为优选的技术方案,所述定义目标代码文件的模板文件,遵循FreeMarker模板FTL指令规则、插值规则、表达式规则,并统一模板后缀名;
所述根据模板文件生成代码文件,根据FreeMarker模板引擎实现,具体包括:验证传入参数;创建配置对象,并放入参数;读取目标代码文件,并验证是否存在,如果不存在则创建;采用配置对象读取指定的模板文件,并输出写入目标文件;
所述生成数据模型和持久层代码具体采用Mybatis代码生成插件生成数据模型和持久层代码。
作为优选的技术方案,所述根据持久层代码自动生成服务层、控制层代码,生成的代码具体为:
控制层显式声明继承基础模块中的基础控制类,并且生成增删查改接口,每个接口上都使用注解显式声明其路由地址、返回类型以及参数验证;
服务层显式声明继承基础模块中的基础服务类。
本发明还提供一种基于SSM框架的Restful服务开发装置,包括:基础模块、工具模块、代码生成模块和通用模块;
所述基础模块用于定义通讯协议、通讯格式、数据验证、异常处理、基础控制实现类、基础服务接口与实现类,实现控制层、服务层、持久层之间的调用逻辑,数据模型与功能模块之间的对应关系;
所述工具模块封装数据及工具;
所述代码生成模块包括:模板文件、代码生成器、Mybatis代码生成插件;
所述模板文件用于定义目标代码文件的模板,按照基础模块的定义编写模板文件,所述代码生成器用于根据模板文件生成代码文件,所述Mybatis代码生成插件用于生成数据模型和持久层代码;
所述通用模块根据基础模块、工具模块和代码生成模块实现功能管理,所述代码生成模块用于根据项目包名自动生成配置文件,根据数据库自动生成数据模型、持久层的代码,根据持久层代码自动生成服务层、控制层代码,在各个数据模型的字段上添加基本的数据验证,修改服务层的查询条件,根据各个功能管理不同的需求,按照控制层代码结构分别修改对应功能管理的接口。
作为优选的技术方案,所述基础控制实现类具体包括:以泛型的方式维护其对应的服务层对象、持久层类型、数据模型,以备被子类继承时,控制具体的功能模块与数据的对应关系,并实现增删查改;
所述基础服务接口与实现类具体包括:以泛型的方式维护其对应的持久层对象、数据模型,以备被子类继承时,控制具体的功能模块与数据的对应关系,并实现业务调用持久层的操作数据库。
作为优选的技术方案,所述工具模块包括基础操作工具、Excel子工具、文件拆分与合并工具、FTP工具;
所述Excel子工具用于使用poi技术,对第三方类库进行二次封装,分别实现Excel文件的写入、读取、模板填充的操作;
所述文件拆分与合并工具用于使用线程同时读取源文件,并行操作目标文件;
所述FTP工具用于定义客户端操作接口、客户端回调接口,过程监听接口,并实现FTP操作类,编写客户端操作接口的实现类,根据不同业务调用FTP操作类。
作为优选的技术方案,所述通用模块与基础模块的采用分离式设计。
本发明还提供一种存储介质,存储有程序,所述程序被处理器执行时实现如上述基于SSM框架的Restful服务开发方法。
本发明与现有技术相比,具有如下优点和有益效果:
(1)本发明设置代码生成模块生成相关配置文件,无需阅读相关文档,可以自动配置一个SSM框架的项目,操作快速简便;并且代码生成模块生成服务层、控制层代码,既节省编写服务层、控制层的部分代码的操作,又可统一代码结构,控制各层之间的调用关系。
(2)本发明通过对工具模块的封装,既让编程人员不需要关注底层代码的开发,提高了开发效率,又统一了第三方类库的使用。
(3)本发明通过基础模块中的基础服务接口与实现类,以泛型的方式维护其对应的持久层对象、数据模型,再加上持久层、数据模型是由Mybaits根据实际数据库生成出来的方式,可以让本发明应用在基于所有Mybaits支持的数据库的项目开发。
(4)通过引入通用模块的项目,为该项目节省重复开发用户管理、部门管理、职务管理、角色管理、菜单管理、地区管理、文件管理、岗位管理、日志管理、用户授权这些功能,大大加快项目开发的进度。
(5)本发明采用的通用模块与基础模块的分离式设计,为系统管理功能提供高度的可伸缩性,使得扩展层可以自由添加其它功能模块,以备开发项目时有选择引入。
附图说明
图1为本发明的基于SSM框架的Restful服务开发装置框架结构示意图;
图2为本发明控制层、服务层、持久层UML类图;
图3为本发明通用模块的功能结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例
如图1所示,本发明提供一种基于SSM框架的Restful服务开发装置,包括:基础模块、工具模块、代码生成模块和通用模块;
其中,基础模块定义通讯协议、通讯格式、数据验证、异常处理、基础控制实现类、基础服务接口与实现类,以及实现了控制层、服务层、持久层之间的调用逻辑,数据模型与功能模块之间的对应关系。
在本实施例中,数据模型与功能模块是一一对应的关系,即一个数据模型对应着1个功能模块,而1功能模块包含N个功能。这些对应关系在控制层、服务层、持久层间的实现中指定,即1个数据数据模型实现对应的1个控制层、1个服务层、1个持久层,这三层则组成1个功能模块;而这个功能模块每层都分别实现了N个行为,由下层服务的N个行为组装成上层服务的1个行为,就形成本实施例所说的功能。
在本实施例中,通讯协议使用http/https协议实现,统一使用POST请求方式,指定访问令牌放到请求头中。本实施例的框架作为服务端,主要责任是控制,是使用Spring的拦截器技术,实现访问拦截器,拦截所有http/https请求,验证请求方式以及提取访问令牌并放到缓存。
在本实施例中,通讯格式主要是定义响应格式,统一使用JSON格式返回,并且限制返回字段。首先,配置Spring的消息转换器,添加支持JSON格式;其次,定义普通数据返回对象以及分页数据返回对象,最后返回的数据都需要在控制层通过这个两个对象封装一下再返回。
在本实施例中,数据验证使用JSR303标准,依赖Hibernate Validator验证插件。自定义一些验证分组注解,提供给BEAN字段以及访问接口的声明式验证处理使用,用于不同场景下组装验证规则,例如指定某个字段添加数据时非空、编辑数据时为空等,这些自定义注解与验证注解联合使用,这是BEAN的验证方式。另一方面定义验证工具类,提供给代码验证方式使用。
在本实施例中,验证工具类实现的使用代码的手法对数据进行验证,也是BEAN验证方式的一种手法,这个验证工具类作为数据验证功能补充,以便程序员灵活进行数据验证,其实现方式如下:
1、使用Hibernaate Validator创建验证器实例
2、使用验证器实例调用验证方法对指定数据、验证规则进行验证,判断指定的数据是否符合验证规则。
3、如果验证通过,则验证结束;如果验证不通过,则整理验证的结果以及信息,并返回调用者,让其自行处理。
在本实施例中,异常处理利用Spring中的控制器增强技术,统一对未处理的异常进行请求响应。创建一个@ControllerAdvice注解的普通类,对控制器中的Rest接口进行全局监控,再使用@ExceptionHandler注解对各种异常信息进行分类处理。
如图2所示,基础控制实现类以泛型的方式维护其对应的服务层对象、持久层类型、数据模型,以备被子类继承时,控制具体的功能模块与数据的对应关系;并实现常规的增删查改方法,这些方法统一定义了参数类型、返回值以及调用服务层对象的逻辑,用于控制子类调用时,控制其调用逻辑,其中,限制了指定服务层对象必须是使用对应的持久层对象操作数据模型,从而控制具体的功能模块与数据一一对应。
在本实施例中,实现的逻辑采用通用的增删查改逻辑,譬如以查询列表的功能为例:
1、控制层的查询列表行为,先对请求参数做验证,包括参数是否必须、参数格式等的验证,必要时这里可以自行添加一些默认的参数,然后使用参数调用对应服务层的查询列表行为,最后响应请求。
2、服务层的查询列表行为,先对控制层传递进来的参数,这些参数包括查询的条件、分页条件等,进行组装成查询对象,然后使用调用持久层的查询列表行为,最后向控制层返回数据。
3、持久层的查询列表行为,使用服务层传递进来查询对象,调用mybaits框架查询数据库数据,并把数据映射成数据对象列表,最后向服务层返回数据列表。
结合图2所示,基础服务接口与实现类以泛型的方式维护其对应的持久层对象、数据模型,以备被子类继承时,控制具体的功能模块与数据的对应关系;并实现业务常规调用持久层的操作数据库的方法,其中,限制了指定持久层对象必须是操作对应数据模型的持久层对象,从而控制具体的功能模块与数据一一对应,默认实现模型参数转换成查询条件的方法protected Example model2Example(M m){}为全等方式,同时使用PageHelper插件扩展分页获取数据库数据。
在本实施例中,工具模块的封装包括常规工具类,封装字符串、数字、日期时间、对象、数据流、集合、数组、文件、文件压缩、数据缓存、数据加解密、Json转换、Http请求、数据结构转换等基础操作。另外封装了Excel、文件拆分与合并、FTP操作的逻辑较复杂的工具。
其中,Excel子工具使用poi技术,对com.alibaba.easyexcel第三方类库进行二次封装,分别实现Excel文件的写入、读取、模板填充的操作。
在本实施例中,写入操作定义写入Handler接口,分别实现从数据库获取数据写入、从数据集合获取数据写入、多数据源写入的Handler,各个Handler维护自己的写入逻辑,对外暴露统一写入方法,不同的场景使用不同的Handler实现业务功能。
在本实施例中,读取操作定义读取Handler接口,分别实现读取数据到数据库、读取数据到集合的Handler,各个Handler维护自己的读取逻辑,对外暴露统一读取方法,不同的场景使用不同的Handler实现业务功能。
在本实施例中,模板填充操作从数据库或者数据集合中获取数据,然后根据已有的EXCEL模板文件,把获取的数据填充进去并生成新的EXCEL文件,这也是属于写入EXCEL文件的操作。本实施例的模板填充操作定义填充Handler接口,分别实现从数据库获取数据填充、从数据集合获取数据填充、多数据源填充的Handler,各个Handler维护自己的填充逻辑,对外暴露统一填充方法,不同的场景使用不同的Handler实现业务功能。
在本实施例中,文件拆分与合并工具使用线程同时读取源文件,并行操作目标文件,对外暴露统一的拆分与合并方法;
文件拆分先按指定大小计算源文件的分块数量,然后按照分块数量建立线程并放进线程池,使用java.util.concurrent.CountDownLatch.CountDownLatch类统一控制线程执行情况。利用java.io.RandomAccessFile可以同时读取文件的特性,在各个分块线程中读取文件源文件,并计算开始位置、结束位置,分别写入各个分块文件中。
文件合并先创建合并后的目标文件对象,然后按照分块源文件建立线程并放进线程池,使用java.util.concurrent.CountDownLatch.CountDownLatch类统一控制线程执行情况。利用java.io.RandomAccessFile可以同时写入文件的特性,在各个线程中读取文件源文件,并计算开始位置、结束位置,分别读取各个分块文件的数据写到目标文件中。
在本实施例中,FTP工具主要对org.apache.commons.net.ftp.FTP进行二次封装,先定义客户端操作接口、客户端回调接口,过程监听接口。然后使用org.apache.commons.net.ftp的API实现FTP操作类。最后编写客户端操作接口的实现类,根据不同业务调用FTP操作类。对外暴露客户端操作接口,这样的设计使用桥接模式,其优点抽象和实现的分离,让FTP工具具有优秀的扩展能力。
在本实施例中,代码生成模块,由模板文件、代码生成器、Mybatis代码生成插件器组成,按照基础模块的相关定义进行编写模板,用于自动生成代码。
模板文件负责定义目标代码文件的模板,遵循FreeMarker模板FTL指令规则、插值规则、表达式规则来实现,并统一模板后缀名为.ftl,已定模板如下:
generator-config.ftl Mybatis代码生成插件配置文件模板
logback-spring.ftl logback日志配置文件模板
yml.ftl 项目配置文件模板
Application.ftl 项目启动文件模板
WebConfiguration.ftl 项目配置类模板
GlobalExceptionHandler.ftl 项目统一异常处理类模板
Service.ftl 服务层接口模板
ServiceImpl.ftl 服务层实现类模板
Controller.ftl 控制层实现类模板
代码生成器负责根据自定义的模板文件生成代码文件,依赖FreeMarker模板引擎来实现,其生成代码的工作流程如下:
首先,验证传入参数,例如项目基础包名、模型包名、持久层包名
其次,创建freemarker.template.Configuration配置对象,并把参数放进去。
然后,读取目标代码文件,并验证是否存在,如果不存在则创建。
最后,使用Configuration配置对象读取指定的模板文件,并输出写入目标文件。
Mybatis代码生成插件使用mybatis-generator-maven-plugin实现,负责生成数据模型、持久层代码。
如图3所示,通用模块的功能已属于业务功能,单独抽取出来作为独立的系统管理模块,以便于各个系统引入使用。其功能包括用户管理、部门管理、职务管理、角色管理、菜单管理、地区管理、文件管理、岗位管理、日志管理和用户授权。
本模块的实现依赖基础模块、工具模块、代码生成模块,并且独立于这三个模块,实现步骤如下:
a)使用代码生成模块根据项目包名自动生成各种配置文件,生成的配置文件有默认的配置,一般只需要修改配置文件里面的连接数据源信息即可。
b)使用Mybatis代码生成插件根据数据库自动生成数据模型、持久层的代码。这个操作参考org.mybatis.generator插件的用法,先配置好generator-config.xml文件,指定上述功能模块所需要生成代码的数据表,然后使用Maven执行mybatis-generator:generate命令,生成的持久层代码会自动继承tk.mybatis.mapper.common.Mapper,用数据库常用操作方法,需要在类名上添加@Repository注解,把该对象交给Spring维护。
c)使用代码生成模块根据持久层代码自动生成服务层、控制层代码。自动生成的代码情况如下:
控制层显式声明@RestController,会继承基础模块中的基础控制类,并且生成常用的增删查改接口,每个接口上都使用注解显式声明其路由地址、返回类型以及参数验证,这些接口是通过调用基础控制类的增删查改方法实现的;
服务层显式声明@Service会继承基础模块中的基础服务类,继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。派生服务类(新类,一般称子类)单纯继承基础服务类(已有类,一般称父类),子类没有对业务逻辑功能进行扩展,或者没有对父类中已有方法进行重写,因为业务逻辑是未知的,这些未知的业务逻辑代码根本不可能使用程序自动生成代码,必须要程序员根据具体的业务逻辑手动进行代码编写。但即使不进行代码编写来进行功能重写或者扩展,因为派生服务类有继承父类,而这个父类就是基础服务类,它就能拥有基础服务类已有属性和方法。
d)根据JSR303标准在各个数据模型的字段上添加基本的数据验证。例如在用户模型的名字字段上添加@NotBlank(message="名字不能为空",groups=AddNotNull.class),在调用添加用户数据接口的时候,会验证名字这个字段是否为空。
e)修改服务层的查询条件,根据上述各种功能管理不同的字段以及逻辑,分别重写model2Example方法。例如用户的查询条件,需要用户名、账号模糊查找,部门精确查找,创建日期时间段查找,那么在重新model2Example方法时,需要使用tk.mybatis.mapper.entity.Example.Criteria类动态拼接条件。这些细节需要按不同功能管理对应的数据模型、需求分别处理。
f)根据上述各种功能管理不同的需求,按照控制层代码结构,分别修改对应功能管理的接口。例如用户管理,它需要一个修改密码的功能,而自动生成的用户控制器是没有的,所以需要添加相关接口;又例如日志管理,它是不需要删除功能的,但是自动生成的日志控制器是有del的,那么就需要把该接口删除。这些细节需要按不同情况分别处理。
综上所述,使用本发明开发Restfult服务的项目,最大的优势是快速,与通用模块实现步骤一致,只需要进行a-c这三步操作,3-5分钟即可完成一个项目的开发,如需要针对项目进行关注业务逻辑的细节化开发,那么就需要进行d-f这三步操作,这种开发方法可以让程序员只关注业务逻辑;另一方面,统一代码结构、统一插件使用、统一第三方类库,为团队协作开发以及项目后期维护创造有利条件;最后,通用模块的分离式设计,可以自由控制项目是否需要这部份的功能,或者自由扩展该功能。
本实施例还提供一种存储介质,存储介质可以是ROM、RAM、磁盘、光盘等储存介质,该存储介质存储有一个或多个程序,所述程序被处理器执行时,实现上述基于SSM框架的Restful服务开发过程。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (9)

1.一种基于SSM框架的Restful服务开发方法,其特征在于,包括下述步骤:
构建基础模块,定义通讯协议、通讯格式、数据验证、异常处理、基础控制实现类、基础服务接口与实现类,实现控制层、服务层、持久层之间的调用逻辑,数据模型与功能模块之间的对应关系;
构建工具模块,封装数据及工具;
构建代码生成模块,定义目标代码文件的模板文件,根据模板文件生成代码文件,生成数据模型和持久层代码;
构建通用模块,所述通用模块根据基础模块、工具模块和代码生成模块实现功能管理,所述代码生成模块根据项目包名自动生成配置文件,根据数据库自动生成数据模型、持久层的代码,根据持久层代码自动生成服务层、控制层代码,在各个数据模型的字段上添加基本的数据验证,修改服务层的查询条件,根据各个功能管理不同的需求,按照控制层代码结构分别修改对应功能管理的接口;
所述根据持久层代码自动生成服务层、控制层代码,生成的代码具体为:
控制层显式声明继承基础模块中的基础控制类,并且生成增删查改接口,每个接口上都使用注解显式声明其路由地址、返回类型以及参数验证;
服务层显式声明继承基础模块中的基础服务类。
2.根据权利要求1所述的基于SSM框架的Restful服务开发方法,其特征在于,所述通讯协议采用http/https协议,统一使用POST请求方式,指定访问令牌放到请求头中;
所述定义通讯格式具体包括:定义响应格式,统一使用JSON格式返回,并且限制返回字段;
所述数据验证具体包括:定义验证分组注解,提供给BEAN字段以及访问接口的声明式验证处理使用,定义验证工具类,提供给代码验证方式使用;
所述异常处理具体包括:利用Spring中的控制器增强技术,统一对未处理的异常进行请求响应;
所述基础控制实现类具体包括:以泛型的方式维护其对应的服务层对象、持久层类型、数据模型,以备被子类继承时,控制具体的功能模块与数据的对应关系,并实现增删查改;
所述基础服务接口与实现类具体包括:以泛型的方式维护其对应的持久层对象、数据模型,以备被子类继承时,控制具体的功能模块与数据的对应关系,并实现业务调用持久层的操作数据库。
3.根据权利要求1所述的基于SSM框架的Restful服务开发方法,其特征在于,所述封装数据及工具,具体包括封装基础操作工具、Excel子工具、文件拆分与合并工具、FTP工具;
所述Excel子工具使用poi技术,对第三方类库进行二次封装,分别实现Excel文件的写入、读取、模板填充的操作;
所述文件拆分与合并工具使用线程同时读取源文件,并行操作目标文件;
所述FTP工具定义客户端操作接口、客户端回调接口,过程监听接口,并实现FTP操作类,编写客户端操作接口的实现类,根据不同业务调用FTP操作类。
4.根据权利要求1所述的基于SSM框架的Restful服务开发方法,其特征在于,所述定义目标代码文件的模板文件,遵循FreeMarker模板FTL指令规则、插值规则、表达式规则,并统一模板后缀名;
所述根据模板文件生成代码文件,根据FreeMarker模板引擎实现,具体包括:验证传入参数;创建配置对象,并放入参数;读取目标代码文件,并验证是否存在,如果不存在则创建;采用配置对象读取指定的模板文件,并输出写入目标文件;
所述生成数据模型和持久层代码具体采用Mybatis代码生成插件生成数据模型和持久层代码。
5.一种基于SSM框架的Restful服务开发装置,其特征在于,包括:基础模块、工具模块、代码生成模块和通用模块;
所述基础模块用于定义通讯协议、通讯格式、数据验证、异常处理、基础控制实现类、基础服务接口与实现类,实现控制层、服务层、持久层之间的调用逻辑,数据模型与功能模块之间的对应关系;
所述工具模块封装数据及工具;
所述代码生成模块包括:模板文件、代码生成器、Mybatis代码生成插件;
所述模板文件用于定义目标代码文件的模板,按照基础模块的定义编写模板文件,所述代码生成器用于根据模板文件生成代码文件,所述Mybatis代码生成插件用于生成数据模型和持久层代码;
所述通用模块根据基础模块、工具模块和代码生成模块实现功能管理,所述代码生成模块用于根据项目包名自动生成配置文件,根据数据库自动生成数据模型、持久层的代码,根据持久层代码自动生成服务层、控制层代码,在各个数据模型的字段上添加基本的数据验证,修改服务层的查询条件,根据各个功能管理不同的需求,按照控制层代码结构分别修改对应功能管理的接口;
所述根据持久层代码自动生成服务层、控制层代码,生成的代码具体为:
控制层显式声明继承基础模块中的基础控制类,并且生成增删查改接口,每个接口上都使用注解显式声明其路由地址、返回类型以及参数验证;
服务层显式声明继承基础模块中的基础服务类。
6.根据权利要求5所述的基于SSM框架的Restful服务开发装置,其特征在于,所述基础控制实现类具体包括:以泛型的方式维护其对应的服务层对象、持久层类型、数据模型,以备被子类继承时,控制具体的功能模块与数据的对应关系,并实现增删查改;
所述基础服务接口与实现类具体包括:以泛型的方式维护其对应的持久层对象、数据模型,以备被子类继承时,控制具体的功能模块与数据的对应关系,并实现业务调用持久层的操作数据库。
7.根据权利要求5所述的基于SSM框架的Restful服务开发装置,其特征在于,所述工具模块包括基础操作工具、Excel子工具、文件拆分与合并工具、FTP工具;
所述Excel子工具用于使用poi技术,对第三方类库进行二次封装,分别实现Excel文件的写入、读取、模板填充的操作;
所述文件拆分与合并工具用于使用线程同时读取源文件,并行操作目标文件;
所述FTP工具用于定义客户端操作接口、客户端回调接口,过程监听接口,并实现FTP操作类,编写客户端操作接口的实现类,根据不同业务调用FTP操作类。
8.根据权利要求5所述的基于SSM框架的Restful服务开发装置,其特征在于,所述通用模块与基础模块的采用分离式设计。
9.一种存储介质,存储有程序,其特征在于,所述程序被处理器执行时实现如权利要求1-4任一项所述基于SSM框架的Restful服务开发方法。
CN202011642336.XA 2020-12-31 2020-12-31 基于SSM框架的Restful服务开发方法与装置 Active CN112748908B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011642336.XA CN112748908B (zh) 2020-12-31 2020-12-31 基于SSM框架的Restful服务开发方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011642336.XA CN112748908B (zh) 2020-12-31 2020-12-31 基于SSM框架的Restful服务开发方法与装置

Publications (2)

Publication Number Publication Date
CN112748908A CN112748908A (zh) 2021-05-04
CN112748908B true CN112748908B (zh) 2024-02-27

Family

ID=75649437

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011642336.XA Active CN112748908B (zh) 2020-12-31 2020-12-31 基于SSM框架的Restful服务开发方法与装置

Country Status (1)

Country Link
CN (1) CN112748908B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113282277A (zh) * 2021-05-17 2021-08-20 广州紫鲸互联网科技有限公司 Java服务端开发框架
CN113608738B (zh) * 2021-07-23 2023-12-12 成都航盛智行科技有限公司 基于someip仪表数据的汽车服务系统
CN113805877A (zh) * 2021-09-26 2021-12-17 工银科技有限公司 基于idea插件的项目工程的构建方法及装置
CN113835707B (zh) * 2021-09-30 2024-01-19 唯品会(广州)软件有限公司 一种造数方法、装置、设备及可读存储介质
CN114153912A (zh) * 2021-11-12 2022-03-08 上海通贸国际供应链管理有限公司 一种基于可视化集成的分析方法
CN114844875B (zh) * 2022-04-21 2024-02-06 深圳依时货拉拉科技有限公司 一种应用程序编程接口api管理方法、装置、设备及介质
CN114900511B (zh) * 2022-04-25 2023-02-03 湖南大学 工业机器人数据同步采集加载中间件装置及方法
CN114936540B (zh) * 2022-07-22 2022-10-25 深圳联友科技有限公司 一种pdf文档模型的数据处理方法及处理组件
CN115114052B (zh) * 2022-08-30 2022-11-18 北京易诚互动网络技术股份有限公司 一种智能提供数据库微服务的方法和装置
CN116739854A (zh) * 2023-06-29 2023-09-12 北方工业大学 导师和研究生双选及信息管理系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105739987A (zh) * 2016-02-03 2016-07-06 成都四方伟业软件股份有限公司 面向SOA的快速构建JavaWeb应用的系统框架
CN108196836A (zh) * 2018-01-31 2018-06-22 北京工业大学 基于ssm框架的企业内博客系统
CN110825369A (zh) * 2019-11-07 2020-02-21 四川长虹电器股份有限公司 一种基于java语言的代码自动生成的方法
CN111813394A (zh) * 2020-05-22 2020-10-23 广州太平洋电脑信息咨询有限公司 一种基于SpringBoot的Zeus框架的开发方法及Zeus框架
CN112015420A (zh) * 2020-09-16 2020-12-01 广东广宇科技发展有限公司 表单渲染方法、装置、计算机设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631386B2 (en) * 2004-08-25 2014-01-14 Mohit Doshi System and method for automating the development of web services
US7895566B2 (en) * 2005-03-10 2011-02-22 Research In Motion Limited System and method for building a deployable component based application

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105739987A (zh) * 2016-02-03 2016-07-06 成都四方伟业软件股份有限公司 面向SOA的快速构建JavaWeb应用的系统框架
CN108196836A (zh) * 2018-01-31 2018-06-22 北京工业大学 基于ssm框架的企业内博客系统
CN110825369A (zh) * 2019-11-07 2020-02-21 四川长虹电器股份有限公司 一种基于java语言的代码自动生成的方法
CN111813394A (zh) * 2020-05-22 2020-10-23 广州太平洋电脑信息咨询有限公司 一种基于SpringBoot的Zeus框架的开发方法及Zeus框架
CN112015420A (zh) * 2020-09-16 2020-12-01 广东广宇科技发展有限公司 表单渲染方法、装置、计算机设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"基于SSM+Spring Security 的多角色登录功能后台实现";孙云杰 等;《电子技术与软件工程》;第2-5节 *
"大数据时代下基于SSM框架的语音标注系统的设计与实现";密海英;《信息与电脑》;第1-3节 *

Also Published As

Publication number Publication date
CN112748908A (zh) 2021-05-04

Similar Documents

Publication Publication Date Title
CN112748908B (zh) 基于SSM框架的Restful服务开发方法与装置
US20060265469A1 (en) XML based scripting framework, and methods of providing automated interactions with remote systems
US20150378691A1 (en) Rest service source code generation
WO2020015191A1 (zh) 业务规则的发布管理方法、电子装置及可读存储介质
WO2021052338A1 (zh) 智能合约客户端程序的生成方法、系统、设备和介质
Alexiou et al. Advanced capabilities for gas turbine engine performance simulations
US20100229154A1 (en) Declarative aspects and aspect containers for application development
CN111506314A (zh) 项目开发的方法、装置、服务器及介质
US7533077B2 (en) Method, system and program product for automatically creating managed resources
CN116149747A (zh) 接口编排方法、装置、电子设备和计算机可读存储介质
US7617481B2 (en) Prescriptive architecture for application development
CN112860247A (zh) 一种模型组件的自定义生成方法、装置、设备及介质
KR101902191B1 (ko) 질의 기반 소프트웨어 논리의 동적 변경 및 실행을 위한 멀티테넌트 지원 장치 및 방법
Laitkorpi et al. A uml-based approach for abstracting application interfaces to rest-like services
Mouheb et al. Aspect-oriented modeling for representing and integrating security concerns in UML
JP2007018122A (ja) Webサービスカスタマイズシステム
CN113342399A (zh) 应用项目的结构配置方法、装置及可读存储介质
Siegel A preview of CORBA 3
Xu et al. Web-service-oriented customer relationship management system evolution
CN113885844A (zh) 一种业务服务编排方法及相关装置
CN113626001A (zh) 一种基于脚本的api动态编排方法及装置
Srinivasmurthy et al. Web2exchange: A model-based service transformation and integration environment
CN117311799B (zh) 一种软件项目页面的配置方法
CN111459470B (zh) 一种Hub系统对接第三方软件生成代码及文档的方法
CN110187902B (zh) 基于spring boot的项目改造方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant