2020-11-11

一.任务需求:

1.设计灌溉策略表结构,并开发灌溉策略功能(包括定时任务查找是否有需要执行的灌溉策略)

2.得到需要开关的阀控器进行远程调用开关操作接口。

二.开发过程中遇到的问题及解决归纳

问题1>

由于独立搭建开发项目少,对开发项目过程思路不够清楚。在接到任务后,为了快捷便在之前项目上经行了加工开发,结果也因此为项目运行发布埋下了隐患。在项目代码基本完成后,需要系统测试时由于在别的项目上改了项目名称,只是进行了重命名并没有对pom.xml文件中的命名进行修改,同时在开发过程中没有注意随时开发随时测试,导致出现bug后解决问题很麻烦。

注意:

1)项目名称应该与任务需求一致,各个模块命名应该规范.

2)开发一段就进行测试,看项目能否跑起来,及时发现问题。

解决:根据项目进行规范命名,重新搭建项目,或者在pom文件中修改
在这里插入图片描述

pom文件标签详解https://blog.csdn.net/qq_23659871/article/details/88826848

问题2>

对开发需求不明确,对其功能理解与任务需求有出入,没有考虑清楚任务需求中所涉及的接口,以至于开发过程中功能目的不明确,开发效率低。

注意:

1)在开发之前参考原型对需求进行思考,对不清楚的地方要与同事及时沟通。

2)将需求中所涉及的主要数据字段进行文档总结,考虑需求中是否衍生出额外字段

3)创建数据库时主要字段命名要规范

4)将需求进行梳理,涉及的接口进行文档总结理清楚开发步骤

解决:

对数据库主要字段进行文档记录。

对任务需求中的所涉及的接口进行文档梳理;

比如
在这里插入图片描述

问题3>

由于之前没有做过定时任务,在考虑需求时只考虑到了添加一个定时任务,到时间进行发布就可以,考虑需求过于简单,没有考虑其中的涉及到的细节。比如没有考虑定时任务添加后项目是否需要重启才能执行任务以及任务删除的时间节点是否是会影响任务的发布。

由于基础不好对代码理解不够,对应需求进行修改代码时出现了许多问题,花费了大量时间,这个过程是此次开发中遇到的最大困难,需求逐渐变得复杂,远离了实际需求。

注意:

1)多考虑任务需求,在开发过程中站在用户的角度上多考虑会出现的问题,做到未雨绸缪;

2)参考他人项目文档时,一定要理解透彻;

3)需要加强基础知识的理解,做到融会贯通;

解决:

选择了hutool工具,全局定时任务-CronUtil

使用动态添加定时任务,此方法添加的定时任务不会被写入到配置文件

方法:

CronUtil.schedule(String schedulingPattern, Runnable task)

添加定时任务
将数据库中的时间参数转换成Cron表达式

//日期转换成cron表达式 String cron =
DateUtil.format(policyInfo.getExecutionTime(),“s m H d M ? y”);

我们希望未执行定时任务在项目启动时就发布,就要用到

ApplicationRunner

ApplicationRunner是一个接口,我们需要实现它,并重写run()方法,当项目启动时,run()方法便会自动执行。

查询大于当前时间的定时任务,项目启动时就发布
问题4>

远程调用外部接口、获取参数,没有理解调用获取参数传输的原理,调用方法及传参不合理,通过借鉴他人文档引入依赖时没有考虑版本问题导致项目启动不了,再加没有及时测试最终诸多问题堆积到一起使得解决问题变得困难;

Spring-Boot 访问外部接口的几种方案总结
注意:

1)注意调用外部接口的请求方式

2)取参方式,避免取到空值

3)打印日志的方式

4)灵活操作Http请求,处理Http信息,防止服务器响应请求超时

解决:

1)使用JSONObject转换数据对象

2)使用hutool工具,Http客户端工具类-HttpUtil,针对常用的post和get请求

3)使用Http请求-HttpRequest处理服务器响应的一些信息

首先定义一个调用外部接口的方法
在这里插入图片描述

然后实现其方法
在这里插入图片描述

将外部接口封装配置在yml文件中在这里插入图片描述

问题5>

Mybatis的分页插件PageHelper分页失效,使用pagehelper分页查询空指针异常;本地分页查询成功,发布后查询失败;

注意:

1)有可能存在application.yml文件和mybatis.xml两个文件里面都做了配置,所以会出现空指针问题

2)Springboot 和引入依赖版本冲突问题

3)Sql语句编写要仔细

4)本地测试完成后,发布更新代码要完整

解决:

1)删除了有关pagehelper的配置,具体原因需要注意

2)测试成功后代码重新完整提交,在服务器上重新部署

三.细节处理

1.定时任务放在制定灌溉策略处,添加灌溉策略时同时发布定时任务;

2.定时任务cron表达式转换使用DateUtil.format()方法高效便捷;

3.使用ApplicationRunner类,spring容器启动完成之后,就会紧接着执行这个接口实现类的run方法。查询所有未执行方法,遍历启动;

4.统一规范返回状态码,提示信息

5.开发过程中开启Debug日志记录,方便调试

6.开发过程中在mybatis配置文件中加入打印Sql的语句方便调试,发布时注释掉;

7.注意代码格式,方法与方法之间空格等;

8.重复代码进行封装,减少冗余

9.代码格式在发布前订正完成,发布后尽量避免修改

10项目文件归类存放,避免混乱

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值