我的产品开发之旅(5) - 使用Spring MVC搭建API平台
来源:互联网 发布:网络基础哪本书好 编辑:程序博客网 时间:2024/06/05 01:58
前阵子在忙办房子按揭的事情,跑了一个多星期,终于弄完回来更新了。
环境的配置、如何使用 IntelliJ IDEA 创建Spring MVC的项目在此我就不细说了,网上有很多好的文章。
比如这篇:使用IntelliJ IDEA开发SpringMVC网站(一)开发环境
需要注意的是,使用 IntelliJ IDEA 的时候,不能使用社区版,社区版没有创建web项目相关的功能,需要安装付费版本。在线激活地址可以在评论中问我要。
按照推荐文章项目创建成功后,由于使用了Maven来构建项目,会自动生成 pom.xml 文件,此文件的作用在于管理项目引用的第三方包和Maven的配置。(Maven还有很多强大的功能,但我只会用这一项......)
设置自动下载第三方包
我们将第三方包的Maven标准引用代码粘贴到 <dependencies> </dependencies> 标签中,Maven会自动下载此第三方包,并引用到项目中。
Maven引用库地址:Search/Browse/Explore
进入该地址,在搜索框中输入:Gson
选择一个用的比较多的版本。
复制红框中的代码,粘贴到项目的 pom.xml 的 <dependencies> </dependencies> 中。
项目创建完成,可以开始做项目的架构了。
项目架构图
使用经过改造的简单工厂模式做为项目的框架。
根据项目架构图,创建相应的类库:
从下往上讲解应该比较好。
数据访问接口层(dao)
这一层装载着项目所有数据访问接口类。这一层主要介绍IBaseDao接口类,用于基础的,固定的数据表操作接口定义。其他接口类可以根据业务需求继承此类,这样不必每次都重复创建相同的接口。
(每个接口类都是使用 <T> 泛型参数传递,大大增加了接口的通用型)
ISortDao(一级分类表数据访问接口类,继承IBaseDao)
......
数据访问实现层(daoImpl)
这一层装载着项目所有数据访问实现类。这一层主要介绍BaseDaoImplDB类,连接数据库的操作在此封装,接口实现类可以继承此类,调用里面封装好的连接数据库方法。
SortDapImpl(一级分类表数据访问实现类,继承BaseDaoImplDB类)
......
业务逻辑接口层(service)
这一层装载着项目所有业务逻辑接口类。
和数据访问接口层一样,这一层创建了一个IBaseService接口类,用于基础的,固定的数据表操作接口定义。其他接口类可以根据业务需求继承此类,这样不必每次都重复创建相同的接口。
IBaseServer(一级分类表逻辑接口类,继承IBaseService类)
......
业务逻辑实现层(serviceImpl)
这一层装载着项目所有业务逻辑实现类。
创建一个BaseServiceImpl类,用于将dao层所有接口类初始化在此封装,逻辑层实际处理类可继承或实例化后调用此类封装好的方法。
IBaseServer(一级分类表逻辑实现类,继承BaseServiceImpl类)
VerSignsImpl(请求验签过滤器 ),考虑到不能让每个人都能请求我的接口,所以在请求接口的时候需要经过验签这一流程后才能调用逻辑层。
验签方式:MD5(appKey + appSecret + 时间戳),时间戳转换的时间和服务器时间不能超过一分钟。
验签成功后,通过反射的方式调用相应的接口方法。
反射实现方法:
/** * 利用反射调用相应的方法/接口 * @param service = 已经实例化的接口类 * @param function = 需要执行的逻辑方法名称 * @param data = 参数包 */private <T> Object setServiceEntryway(T service, String function, T data) { Object result = JsonUtils.getUtils().toJson( SetResultModelUtils.getResult().setResult(ResultState.FAILURE, "请求异常!")); try {//获取相应class Class cls = service.getClass(); //利用反射方式获取相应的方法(非静态) Method method = cls.getMethod(function, Object.class); //执行获取到的方法 result = method.invoke(service, new Object[]{data}); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); }return result;}
调用方式:
VerSignsImpl.getVerSigns().serviceEntryway(new 接口,"方法名称",参数数据);
......API接口控制层(controller)
这一层装载着所有API接口的控制、定义。
BaseInitService(统一逻辑接口初始化类),用于将Service层所有接口类初始化在此封装,接口定义类可继承或实例化后调用此类封装好的方法。
SortController(一级分类表API接口定义类)
......
数据实体模型层(model)
这一层装载着项目所有数据实体模型类。BaseResultModel(数据模型固定类),固定的返回数据模板,请求返回统一按此模板返回数据。
......
公共工具层(utils)
MainUtils(常用工具类),将常用到的通用小功能封装到工具类中,方便以后的使用。
......
公有层(global)
这一层装载着项目所有公共类,如业务状态码,秘钥等ResultState(业务状态码),将返回状态码统一放到这个类中,便于调用和维护。
......
完整的代码我会抽时间上传到github上面,到时候会将地址贴出。
本章就到这里啦。
- 我的产品开发之旅(5) - 使用Spring MVC搭建API平台
- 我的产品开发之旅 - SSM框架升级API平台(Spring + SpringMVC + MyBatis)
- spring mvc 环境搭建 demo 的开发
- Spring MVC开发restful API之用户查询请求
- 我的产品开发之旅(1) - 手绘设计图和CentOS环境配置
- 我的产品开发之旅(2) - MySQL设计用户相关表结构
- 我的产品开发之旅(3) - 设计商品一级、二级分类、推荐商品表
- 我的产品开发之旅(4) - 设计UI定义相关表
- Spring MVC-使用Spring Tool Suite IDE搭建Spring MVC开发环境
- 【Phalcon实现高性能接口开发】使用Phalcon高性能PHP框架搭建API MVC架构之实现查询版本的接口
- spring mvc 的搭建
- Spring MVC 的搭建
- Spring MVC开发环境搭建
- 搭建spring mvc开发环境
- 使用Maven搭建Spring MVC+Hibernate开发环境
- Spring MVC开发之一 开发环境的搭建
- Linux开发平台的搭建之Vim
- Linux开发平台的搭建之SecureCRT
- Centos6.6使用本地yum源安装软件
- 1048
- Hive Beeline
- Extjs Grid 只显示列名 不显示数据
- 【问题解决】IDEA右键选择new新文件的时候没有JSP文件选项解决
- 我的产品开发之旅(5) - 使用Spring MVC搭建API平台
- javaee中ssh配置
- Gradle 配置技巧
- CString与double互相转化
- 机器学习:方差Variance与偏差Bias
- 初学C程序
- Android 跑马灯 文字滚动
- 1053
- 深入理解Java:SimpleDateFormat安全的时间格式化