2021-09-22 接口开发和定时任务笔记

(一)接口开发(知乎:基于SpringMVC架构的java接口编写流程)

Spring框架基本内容

首先从SpringMVC框架的基本流程剖析:

  1. 用户发送请求至前端控制器DispatcherServlet(无需开发,框架提供。流程控制中心,控制其他组件执行,提高每个组件的扩展性,降低组件间耦合性。作用:接收请求,响应结果,相当于转发器,中央处理器。这里作为接收请求执行)。

  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器(无需开发,框架提供。根据请求的url查找handler,通过扩展处理器映射器实现不同的映射方式,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等)。

  3. 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

  4. DispatcherServlet调用HandlerAdapter处理器适配器(通过扩展处理器适配器,去支持更多类型的适配器,作用:按照特定规则去执行Handler(也叫做controller)(由于Handler(controller)涉及到具体的用户业务请求,所以一般情况需要工程师根据业务需求开发Handler(controller)。Handler(controller) 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler(controller)对具体的用户请求进行处理。))。

  5. HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器,作用:接收请求—>调用模型—>根据结果派发页面)。

  6. Controller执行完成返回ModelAndView(包含Model,dao,service,entity,view)。

  7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet前端控制器。

  8. 前端控制器DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

  9. ViewReslover解析后返回具体View。

  10. DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

  11. DispatcherServlet响应用户。

其中以下两项需要自行开发

Handler(又叫作controller):处理器,即后端控制器用controller表示。

View:视图,即展示给用户的界面,视图中通常需要前端通过标签语言展示模型数据。

想必到这里,还是有一点混乱的,简易梳理版:

  • 第一步: 用户发起请求到前端控制器(DispatcherServlet)
  • 第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(controller):通过xml配置或者注解进行查找
  • 第三步:找到以后处理器映射器(HandlerMappering)向前端控制器返回执行链(HandlerExecutionChain)
  • 第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(controller)
  • 第五步:controller执行完给处理器适配器返回ModelAndView 第六步:处理器适配器向前端控制器返回ModelAndView
  • 第七步:前端控制器请求视图解析器(ViewResolver)去进行视图解析 第八步:视图解析器像前端控制器返回View
  • 第九步:前端控制器对视图进行渲染 第十步:前端控制器向用户响应结果

更深刻理解springMVC中的所有组件:

  • 前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU。
  • 处理器映射器(HandlerMapping):根据URL去查找处理器 处理器(Handler):(需要程序员去写代码处理逻辑的)
  • 处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就可以支持多种类型的处理器,类比笔记本的适配器(适配器模式的应用)
  • 视图解析器(ViewResovler):进行视图解析,多返回的字符串,进行处理,可以解析成对应的页面
    SpringMVC框架下接口的开发流程

大白话版基本流程为:进行MyBatis的配置–》调整module文件中的内容–》通过mybatis生成的Mapper包调整–》修改dao文件内容–》在serviceImpl中添加业务逻辑–》在service中添加公共方法–》在控制器controller中增加类。完成这个流程即可调用相应接口内容

一、mybatis的配置

在项目中右键目录选择Generate MyBatis/iBatis Artifacts方式进行mapper.xml的创建。

1、在mybatis的配置文件中对中diver

class设置为"org.postgresql.Driver",数据库的类型选择要从resource下的jdbc.properties中进行选取,选取内容为当前开发环境的数据库类型。

url设置为jdbc:postgresql://192.0.0.1:3000/(数据库名称)

userId=’’;//选取数据库的用户名

password=’’;//选取数据库的密码

2、生成模型的包名与位置

3、生成映射文件的包名与位置

4、生成dao文件的包名与位置

<Java client Generator targetPackage为XXX.XXX.dao>

<java client Generator targetProject为项目名称>

二、model文件的修改

注意public class 函数名要与dao文件中的List<*>中**的内容相一致

保证数据库内字段有多少,就要存在多少个private私有变量。

三、MAPPER.xml文件

通过生成的Mapper包,复制后导入main/resource中的mapper文件中

需要在resultMap方法外添加select方法,其中写入相应的类sql的支持mybatis表示方法的语句,目的是进行数据内容的获取。同时select中的id要与dao文件下的对应方法名相同

四、DAO文件

无重点内容,需要注意的是数据库内部数据的提取流程

1、jdbc中数据格式的修改

需要添加时:

jdbc_driveClassName=org.postgresql(数据库类型名).Driver
jdbc_url = jdbc:postgresql://localhost:0000/postgres(库名)
jdbc_username = postgres;(用户名)
jdbc_password = postgres;(密码)
2、Spring-context-mybatis.xml

编写

再在动态数据源中加入

3、在main/java中找到util包

在MybatisJdbcutil.java文件中添加一种新的DBtype;至此数据就可以获取到了。

五、serviceIMP,service,controller等文件

(二)定时任务(Job Scheduler)

使用spring可以很简单的通过配置来实现定时调度,但某些情况下我们需要将定时调度这些服务单独独立出来,这样的好处是可以使其单独部署,还可以让调度服务做中间件去完成其他的工作。
1、服务架构设计
定时服务作为独立的服务运行,与其他系统属于相辅相成的关系,既可以同步调用也可以异步调用。在设计之初,我是打算把它做一个异步系统来做的,它只负责任务的调度,而具体的执行是通过调用接口完成的。而任务的存储,目前是基于内存的,我试过基于数据库MYSQL的也没有什么大问题,只是配置上有一些不同。
2、需要考虑的问题
(1)接口设计
一般我们需要支持registe,delete,update,query等接口。这里我们作为demo,就定义一个registe接口。
(2)任务参数
其他系统要使用此系统,就要调用registe接口,那我们需要定义一个实体来存储任务信息,有些字段是必须的,例如:任务来自于哪里,任务属于哪个组(比如订单组),任务的类型(是一次性任务还是循环任务),任务开始的时间,任务的结束时间,任务执行的时候需要的数据(例如订单ID),如果任务是循环任务那循环参数是什么(是一天一次还是一周一次)。任务创建后,会产生一个唯一的key,也会有目前的执行状态(未开始,执行中,已结束)等。

对于任务参数我重点说一下关于任务的分类,这里我将任务分为两个类别(1)一次性任务,即执行完后一次后立刻结束不会再循环执行第二次(2)表达式任务,通过quartz支持的conf表达式来完成的任务,时间上比较灵活可以一次性也可以循环等。另外这里你可能有一个疑问为什么我们要开发这样一个接口?有些任务是系统内置的,他们在服务启动的时候就自动注册了,而有些任务是后期产生的,例如订单下单才会注册这个任务。下面我们通过一个实例来学习下具体的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值