java定时任务

本文介绍了在Java中实现定时任务遇到的问题及解决方案,包括如何设计数据库表结构、选择唯一标识以及避免使用Controller层接口。在定时任务中,讨论了非Controller层获取request对象的问题,确定不需要传入request参数,并提醒注意Spring的@Scheduled注解、任务方法无返回值以及@Component注解的使用。同时,提到了Cron表达式的应用和时间同步问题。
摘要由CSDN通过智能技术生成

记录一下遇到的坑和学到的东西。

我有一个需求是显示一个表格,表格由两部分组成。一部分是每月一日从数据库中查出的固定数据,这部分表格数据在当月一直不变,另外一部分是实时查出的数据。刚开始没绕过来,只知道要用定时任务,后来跟同学交流后明白了应该每月一日去数据库查我需要的数据,查处后插入一个专门记录这个数据的表,定时任务做的事只是每月一次的查询和插入。固定数据我还是从数据库中查,只不过现在查的是我之前新建的那个表,根据当前时间来筛选我需要的数据。朋友建议我在设计表时留一个过期时间字段用于之后方便删除。

插入的时候我想着增加一个datetime类型的创建时间和id,虽然创建时间不同,但没见过用创建时间做主键的。刚开始用的int型方便自增,但后来一想我的数据很庞大的话插入很快就会超出int型范围于是id设置为varchar,想着可以创建个工具类把这个表关联的id和createtime联合生成一个唯一id,但是看之前写代码的人有用UUID(Universally unique identifier)通用唯一标示符,用了之后我又想uuid会不会出现重复,后来看到uuid是16位,这样我的数据都有超千亿不重复所以不用考虑,这样新表就ok了。

一开始用定时任务的时候想着在定时任务里调controller层接口,现在我实在无法吐槽当时的自己。。。controller层就专门用来获取接口其他的不写,component层也不要调controller层,一般调用service层,service的获取用注解。还有一个问题,我的service参数都有一个 HttpServletRequest request,用于获取当前账号,而非cont

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值